我在我的 SSIS 包中运行 Execute SQL Task 语句。执行 SQL 任务正在运行 sql 并检查表是否超过 1000 行。如果它们的行数少于 1000,我想使包失败。
如何在 SQL 语句中强制失败?
我在我的 SSIS 包中运行 Execute SQL Task 语句。执行 SQL 任务正在运行 sql 并检查表是否超过 1000 行。如果它们的行数少于 1000,我想使包失败。
如何在 SQL 语句中强制失败?
AFAIK,SSIS 中的任务因错误而失败。因此,如果您的 Execute SQL Task 中有这样的语句:
declare @count int
select @count = select count(*) from my_table
if @count < 1000
begin
raiserror('Too few rows in my_table',16,1)
end
else
begin
-- Process your table here
end
你应该得到你想要的结果。
我喜欢通过使用脚本任务来强制失败。这真的很容易。
1)添加脚本任务
2) 将自动生成的代码行从:
Dts.TaskResult = (int)ScriptResults.Success;
到
Dts.TaskResult = (int)ScriptResults.Failure;
你去吧!
您可以像这样创建自定义错误消息
EXEC sp_ADDMESSAGE
@msgnum=55555,
@severity=1,
@msgtext='Threshold condition failed. The package execution has been terminated.'
然后,您可以使用 Raiserror() 调用此错误
Raiserror (55555,20,-1) WITH LOG
您需要为严重性输入一个大于 18 的数字(此处为 20)。您需要为此拥有管理员权限。并且不要忘记WITH LOG
您需要使属性 FailPackageOnFailure 为 true..尝试检索特定任务的属性 FailPackageOnFailure 并将值分配为 true。因此该软件包将失败。