2009-05-01 11 views
5

プロファイラを使用してSQL Server 2005でトレースを実行していて、報告されたエラーの原因を突き止める必要があります。SQL Serverプロファイラトレースで報告されたエラーの原因を調べる方法はありますか?

私は「空白」テンプレートを使用して、次のイベントのすべての列を選択:

  • 例外
  • 為替流出イベント
  • 実行警告列の統計情報が欠落してい
  • ハッシュ警告
  • 不足結合述語

私は "のTextData" の欄に、これらのエラーの数を気づい:

  • エラー:156、レベル:16、状態:0
  • エラー:208、レベル:16、状態:0

エラー(不正な構文、無効なオブジェクト名)を検索しましたが、どのようなストアドプロシージャやクエリがそれらを引き起こしているのかをどのように調べることができますか?

答えて

7

208のエラーは心配しないでください。 208は「オブジェクトが見つかりません」です。 Profilerは、「遅延名前解決」と呼ばれるもののためにこれを選択します。

次の手順を実行します。 procがあるため、テーブルが#TEMPが存在しない場合procのプロファイラトレースを実行している場合は、エラー208の1つのまたは2つのインスタンスを参照してくださいよそれはだ、しかし、エラーなしで正常に動作することを

CREATE PROCEDURE Demo AS 
    CREATE TABLE #Temp (ID int) 
    INSERT INTO #Temp VALUES (1) 
    SELECT ID FROM #Temp 
GO 

開始されます。これは、コードが解析されてバインドされるときです。基礎となるオブジェクトにバインドするプロセスが失敗します。

作成テーブルが実行されると、他のステートメントが再コンパイルされ、正しいテーブルにバインドされ、エラーなしで実行されます。

遅延解決エラーがプロファイラに表示されるのは、唯一の場所です。

+0

SPIDは、208行をSP:StartingとSP:Completed rowsに関連付ける唯一の方法と思われます。これを使用すると、これは正しいと思われます。これらの208は、常にテンポラリテーブルを使用するストアドプロシージャの呼び出しの直前にあるように見えます。 –

+0

IIRCには、誤って解釈されることが多いため、また実際の208エラーを隠すため、Profilerからこれらを削除するConnect項目があります。 – GilaMonster

1

sql 2005ではできません。 SQL:StmtStarting、SQL:StmtCompleted、User Error MessageおよびExceptionイベントのプロファイラトレースを、text、transactionId、EventSequenceおよびotehrカラムとともに実行して、何が起こっているのかを把握する必要があります。

+0

SQL:StmtStartingとSQL:StmtCompletedを追加しましたが、「USE DBname」しか取得できませんでした。 SP:StartingとSP:Completedに切り替え、コマンドを受け取りました。 –

関連する問題