我正在我的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