2011-01-26 14 views
1

現在、私のプロジェクト用のスクリプトを入力していますが、現在MS SQLが提供する機能のほとんどを実行する方法に関する情報を見つけることが困難です。SQL文が失敗した場合のインスクリプトの決定方法

SQL文の実行に失敗したかどうかをテストする方法を解明しようとしています。たとえば、すでにテーブルに存在するレコードを挿入しようとします。任意の助けが大いに評価されるでしょう

答えて

5

SQLサーバーのtry/catch capabilitiesを使用できます。

Another article sourceと試料T-SQL:例えば

BEGIN TRY 
    DECLARE @X INT 
    -- Divide by zero to generate Error 
    SET @X = 1/0 
    PRINT 'Command after error in TRY block' 
END TRY 
BEGIN CATCH 
    PRINT 'Error Detected' 
END CATCH 

特定の操作のためにcatchブロック内の障害を処理します。

+0

非常に助けてくれてありがとう、 – Steve

+0

@Steve:問題ありません。しかし、アップ/ダウン投票で参加して回答を受け入れることを忘れないでください。それがあなたが答えを検証する方法であり、それがSOをうまく動作させるものです。 FAQ:http://stackoverflow.com/faq、特に評判のセクションをご覧ください。乾杯とようこそ! –

1

試してみてください。ポロセスに多くのステップがあり、エラーを含むいくつかの後始日に何が起こったのかを詳しく知りたい場合は、各ステップの後に必要な詳細をテーブル変数に格納することができます(そしてcatchブロックのエラー)、ロールバックの後、詳細を永久通帳ロギングテーブルに挿入します。これにより、後で問題を研究する際に非常に貴重なエラーの履歴が得られます。テンポラリテーブルがロールバックされている間は、テーブル変数は範囲外にはなりません。

+0

ああ、それは間違いなく貴重な洞察力です、助けてくれてありがとう – Steve

関連する問題