7

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

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

  • 例外
  • 交換流出イベント
  • 実行警告
  • ハッシュ警告
  • 欠落している列統計
  • 結合述語がありません

「TextData」列にこれらのエラーがいくつかあることに気付きました。

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

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

4

2 に答える 2

10

208 エラーについて心配する必要はありません。208は「オブジェクトが見つかりません」です。Profiler は、いわゆる「遅延名前解決」のためにこれらを検出します。

以下の手続きを行ってください。

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

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

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

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

于 2009-05-03T19:12:10.700 に答える
2

SQL2005ではできません。SQL:StmtStarting、SQL:StmtCompleted、ユーザーエラーメッセージ、および例外イベントのプロファイラートレースを、テキスト、transactionId、EventSequence、およびその他の列で実行して、何が起こっているのかを把握する必要があります。

于 2009-05-01T20:20:31.817 に答える