18

我在我的 SSIS 包中运行 Execute SQL Task 语句。执行 SQL 任务正在运行 sql 并检查表是否超过 1000 行。如果它们的行数少于 1000,我想使包失败。

如何在 SQL 语句中强制失败?

4

5 回答 5

21

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

你应该得到你想要的结果。

于 2009-01-12T15:12:07.327 回答
18

我喜欢通过使用脚本任务来强制失败。这真的很容易。

1)添加脚本任务

2) 将自动生成的代码行从:

Dts.TaskResult = (int)ScriptResults.Success; 

Dts.TaskResult = (int)ScriptResults.Failure;

你去吧!

于 2015-06-26T14:56:18.063 回答
4

您可以像这样创建自定义错误消息

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

于 2013-03-01T10:27:55.537 回答
2

您需要使属性 FailPackageOnFailure 为 true..尝试检索特定任务的属性 FailPackageOnFailure 并将值分配为 true。因此该软件包将失败。

于 2009-01-14T11:23:55.167 回答
0
  1. 创建用户变量。将记录计数存储在该变量中 (User::Rcnt)
  2. 只需使用发送邮件任务并定义工作流程。
  3. 在先例约束中 (User::Rcnt<20)
于 2017-03-08T17:51:05.357 回答