1

シーケンス コンテナーに接続するデータ パッケージに sql タスクがあります。SQLタスクには次のものがあります:

BEGIN TRY
BEGIN TRAN

TRUNCATE TABLE  foo_Copy
INSERT INTO foo_Copy
SELECT * FROM foo

COMMIT TRAN
END TRY

BEGIN CATCH

ROLLBACK TRAN

END CATCH

問題は、エラーが発生したときに "Rollback Tran" が実行され、SQL サーバーがエラーを発生させないため、SQL タスクもうまくいかず、緑色の接続が次のコンテナーに進むことです。SSIS データ パッケージの SQL タスク内でロールバックを実行するときに、障害を発生させる、または次のステップを妨げる最善の方法は何ですか。ありがとう。

4

1 に答える 1

0

RAISERROR を使用します。次のリンクを参照してください: sql try catch

BEGIN CATCH
  -- Whoops, there was an error
  IF @@TRANCOUNT > 0
     ROLLBACK

  -- Raise an error with the details of the exception
  DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
  SELECT @ErrMsg = ERROR_MESSAGE(),
         @ErrSeverity = ERROR_SEVERITY()

  RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH

Sql Server 2012 を使用している場合は、RAISERROR の代わりに THROW を使用できます: throw error

于 2014-01-22T23:42:09.260 に答える