13

SQLプロファイラー(SQL 2008)を使用してこの問題のトラブルシューティングを試みています

本番環境でトレースを実行して数日後、最終的にエラーが再び発生しました。現在、原因を診断しようとしています。問題は、トレースに40万行あり、その99.9%が「レポートサーバー」からのものであるということです。これは、なぜオンになっているのかさえわかりませんが、SQLServerに毎秒pingを実行しているようです...

トレースから一部のレコードを除外して、残りを確認できるようにする方法はありますか?
現在の.trcファイルでこれを行うことはできますか、それともトレースを再度実行する必要がありますか?
この機能を提供できる.trcファイルを調べる他のアプリケーションはありますか?

4

5 に答える 5

26

キャプチャしたトレースをSQLServerProfiler: SQLServerProfilerを使用したトレースの表示と分析に読み込むことができます。

または、ClearTrace(無料バージョン)などのツールにロードして、ワークロード分析を実行することもできます。

次のように、SQLServerテーブルにロードできます。

SELECT * INTO TraceTable
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default)

次に、クエリを実行して、次のようなデータを集約できます。

SELECT 
  COUNT(*) AS TotalExecutions,     
  EventClass, 
  CAST(TextData as nvarchar(2000)) ,
  SUM(Duration) AS DurationTotal ,
  SUM(CPU) AS CPUTotal ,
  SUM(Reads) AS ReadsTotal ,
  SUM(Writes) AS WritesTotal
FROM 
  TraceTable
GROUP BY 
  EventClass, 
  CAST(TextData as nvarchar(2000))
ORDER BY 
  ReadsTotal DESC

参照:MS SQL Server 2008-最も高価なクエリをログに記録して見つけるにはどうすればよいですか?

キャプチャされたトレースを開始する前に、フィルターを設定することも一般的です。たとえば、一般的に使用されるフィルターは、特定の数、たとえば5000を超える読み取りを必要とするイベントのみに制限することです。

于 2009-09-21T03:03:15.287 に答える
4

.trcをローカルにロードしてから、[データベースに保存]を使用してローカルデータベースに保存し、ハートのコンテンツにクエリを実行します。

于 2009-09-21T03:00:47.683 に答える
4

これらの提案は、既存のトレースに最適です。発生したトレースをフィルタリングする場合は、トレースを開始する前に、トレースにイベントフィルターを設定できます。

私の経験で最も有用なフィルターはアプリケーション名です。これを行うには、データベースへの接続に使用されるすべての接続文字列に適切なアプリケーション名の値が含まれていることを確認する必要があります。

"... Server = MYDB1; Integrated Authentication = SSPI; Application Name = MyPortal; ..."

次に、新しいトレースのトレースプロパティで、[イベントの選択]タブを選択し、[列フィルター...]をクリックします。

ApplicationNameフィルターを選択し、指定した接続のみを含めるようにLIKEに値を追加します。つまり、LIKEフィールドでMyPortalを使用すると、そのアプリケーション名を持つ接続のイベントのみが含まれます。

これにより、たとえば、Reporting Servicesが生成するすべてのクラッドを収集できなくなり、その後の分析が大幅に高速化されます。

他にも利用できるフィルターがたくさんあるので、長時間の実行(Duration)や大きなIO(Reads、Writes)など、探しているものがわかっている場合は、それでフィルターをかけることもできます。

于 2009-09-21T04:57:34.520 に答える
2

SQL Server 2005以降、SQLProfilerから直接.trcファイルのコンテンツをフィルタリングできます。SQLテーブルにインポートせずに。ここで提案されている手順に従ってください。

http://msdn.microsoft.com/en-us/library/ms189247(v=sql.90).aspx

追加のヒント:「%」をフィルターのワイルドカードとして使用できます。たとえば、SRVのようなホスト名でフィルタリングする場合は、SRV%を使用できます。

于 2013-07-31T16:12:01.993 に答える
0

ここでは、フィルタリングできるイベントの完全なリストを使用して、デフォルトのトレースをクエリするための完全なスクリプトを見つけることができます。

http://zaboilab.com/sql-server-toolbox/anayze-sql-default-trace-to-investigate-instance-events


イベント番号をデコードするには、sys.trace_eventsに参加しているsys.fn_trace_gettable(@ TraceFileName、default)にクエリを実行する必要があります。

于 2013-06-18T09:44:17.310 に答える