SQL Serverプロファイラートレースで報告されたエラーの原因を見つける方法
-
03-07-2019 - |
質問
プロファイラーを使用して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、その他の列を使用して実行する必要があります。
所属していません StackOverflow