我正在我的SSIS包中运行一个执行SQL任务语句。执行SQL任务正在运行sql并检查这些表是否有超过1000行。如果他们的行少于1000行,我想让包失败。如何在集成服务中手动失败包?
如何在SQL语句中强制失败?
我正在我的SSIS包中运行一个执行SQL任务语句。执行SQL任务正在运行sql并检查这些表是否有超过1000行。如果他们的行少于1000行,我想让包失败。如何在集成服务中手动失败包?
如何在SQL语句中强制失败?
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
你应该得到你想要的结果。
您需要使属性FailPackageOnFailure true..try检索特定任务的属性FailPackageOnFailure并将值赋给true。这样包就会失败。
您可以创建这样
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)。您需要具有管理员权限。并且不要忘记使用日志
我喜欢使用脚本任务强制失败。这很容易。
1)脚本任务
2)改变自动生成的代码行添加:
Dts.TaskResult = (int)ScriptResults.Success;
到
Dts.TaskResult = (int)ScriptResults.Failure;
和你去那里!
您还必须正确设置包的属性,并可能设置 'failparentonerror' – ConcernedOfTunbridgeWells 2009-01-12 15:27:50