我在SSIS包中运行了一个Execute SQL Task语句。执行SQL任务正在运行sql并检查表是否有超过1000行。如果它们的行数少于1000行,我想让包失败。
如何在SQL语句中强制失败?
答案 0 :(得分:19)
AFAIK,SSIS中的任务因错误而失败。因此,如果您的执行SQL任务中有一个类似的语句:
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 :(得分:11)
我喜欢使用脚本任务强制失败。这真的很容易。
1)添加脚本任务
2)更改自动生成代码的行:
Dts.TaskResult = (int)ScriptResults.Success;
到
Dts.TaskResult = (int)ScriptResults.Failure;
然后你去!
答案 2 :(得分:3)
您可以像这样创建自定义错误消息
EXEC sp_ADDMESSAGE
@msgnum=55555,
@severity=1,
@msgtext='Threshold condition failed. The package execution has been terminated.'
然后,您可以使用Raiserror()
调用此错误Raiserror (55555,20,-1) WITH LOG
您需要为严重性(此处为20)输入大于18的数字。您需要拥有此管理员权限。并且不要忘记 WITH LOG
答案 3 :(得分:2)
您需要使属性FailPackageOnFailure true..try检索特定任务的属性FailPackageOnFailure并将值赋值为true。所以包裹将失败。
答案 4 :(得分:0)