SQL Serverプロファイラートレースで報告されたエラーの原因を見つける方法

StackOverflow https://stackoverflow.com/questions/812522

質問

プロファイラーを使用してSql Server 2005でトレースを実行していましたが、報告されたエラーの原因を見つける必要があります。

「空白」を使用しましたテンプレート、および次のイベントのすべての列を選択しました:

  • 例外
  • 流出イベントの交換
  • 実行警告
  • ハッシュ警告
  • 列統計の欠落
  • 結合述語の欠落

" TextData"にこれらのエラーが多数あることに気付きました。列:

  • エラー:156、重大度:16、状態:0
  • エラー:208、重大度:16、状態:0

エラー(不正な構文、無効なオブジェクト名)を調べましたが、どのストアドプロシージャまたはクエリが原因であるかをどのように確認できますか?

役に立ちましたか?

解決

208エラーについて心配する必要はありません。 208は「オブジェクトが見つかりません」です。プロファイラーは、「遅延名前解決」と呼ばれるもののためにこれらを選択します。

次の手順を実行します。

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

このプロシージャはエラーなしで正常に実行されますが、プロファイラトレースを実行している場合、エラー208の1つまたは2つのインスタンスが表示されます。これは、プロシージャの開始時にテーブル#Tempが存在しないためコードが解析されバインドされたとき。基礎となるオブジェクトへのバインドのプロセスは失敗します。

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

遅延解決エラーがプロファイラーにあることがわかる唯一の場所です。

他のヒント

SQL 2005ではできません。 SQL:StmtStarting、SQL:StmtCompleted、ユーザーエラーメッセージ、例外イベントのプロファイラートレースを、テキスト、transactionId、EventSequence、その他の列を使用して実行する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top