SQLプロファイラトレースがSQL Serverのテーブルに保存されています。文字列GUIDの検索/置換
私は、トレース内のクエリでCPU/Reads/Durationの合計/平均/カウント分析を実行したいと考えています。私が最もパフォーマンスが悪いクエリを見つけるために、プロファイラトレースデータを集計しようとするので、
EXECUTE GetTransactionCounts @BankGUID = '{231281D7-F6C2-4EAE-98AE-E9196D8016F0}', @SessionGUID='{7F34361F-CEEA-4CEA-8CBD-2704FFE92DEF}'
SELECT SUM(Total) AS Total FROM fn_BalancingAdditionsUS('{C08961DB-0B6A-4E67-A82B-5BBBA0A84A74}')
EXEC CreateCloser '{7F34361F-CEEA-4CEA-8CBD-2704FFE92DEF}', NULL , '{08E74DBB-3BC4-49A7-AA10-95AA6BD24784}'
EXECUTE GetMachineImpressmentForSession @SessionGUID = '{446881BA-1439-4AD8-B33B-C784120EFBA2}'
SELECT SUM(Total) AS Total FROM fn_BalancingAdditionsCanadian('{446881BA-1439-4AD8-B33B-C784120EFBA2}')
SELECT SUM(Total) AS Total FROM fn_BalancingSubtractionsUS('{446881BA-1439-4AD8-B33B-C784120EFBA2}')
:しかし、プロファイラデータレコードのほとんどはuniqueidentifer
パラメータ(複数可)でストアドプロシージャを呼び出す
SELECT
Description,
COUNT(*) AS EventCount,
AVG(CPU) AS CPU, SUM(CPU) AS CpuTotal,
AVG(Reads) AS Reads, SUM(Reads) AS ReadsTotal,
AVG(Duration) AS Duration, SUM(Duration) AS DurationTotal
FROM SlowQueriesTrace
GROUP BY Description
その後、すべてのGUIDが一意であるため、集計は行われません。どのような私に必要なのは、一般的な%g
マーカーでUNIQUEIDENTIFIERパラメータを置き換えるためにいくつかの方法である:
EXECUTE GetTransactionCounts @BankGUID = %g, @SessionGUID=%g
SELECT SUM(Total) AS Total FROM fn_BalancingAdditionsUS(%g)
EXEC CreateCloser %g, NULL , %g
EXECUTE GetMachineImpressmentForSession @SessionGUID = %g
SELECT SUM(Total) AS Total FROM fn_BalancingAdditionsCanadian(%g)
SELECT SUM(Total) AS Total FROM fn_BalancingSubtractionsUS(%g)
それから私の集約が動作します。
テーブルをExcelにエクスポートして10,270すべてのイベントを手作業で編集するのと同じように、GUID検索を実行する方法は何でも考えられます& SQL Server内のパターンマッチングを置き換えますか?
最初の40個の文字にトリムdescription
(すなわちCAST(description AS varchar(40))
):
EXECUTE GetTransactionCounts @BankGUID =
SELECT SUM(Total) AS Total FROM fn_Balan
EXEC CreateCloser '{7F34361F-CEEA-4CEA-8
EXECUTE GetMachineImpressmentForSession
SELECT SUM(Total) AS Total FROM fn_Balan
SELECT SUM(Total) AS Total FROM fn_Balan
それがマージされるべきではないアイテムをマージ除いて、その他の項目
その他のハックは、私がを試してみました合併するべきではない。
使用SOUNDEX:あなたが同じ同音を与えられている全く異なるラインを見ることができることを除いて
E223
S423
E220
E223
S423
。また、私はどのクエリS338
が対応するかを判断することができません。私が使用して終了
ハックはinitallyヌル新しいCategory
列を、作成することでした。次に、慎重に選択されたLIKE
句で2時間を費やして、特定のクエリを取り出し、それらをすべてクエリに「タグ付け」しました。例えば:私はこの質問を使用してソリューションを必要としないという意味ではありません
UPDATE QueryTrace
SET Category = 'EXECUTE GetTransactionCounts @BankGUID ='
WHERE Description LIKE 'EXECUTE GetTransactionCounts @BankGUID =%'
と
UPDATE QueryTrace
SET Category = 'SELECT SUM(Total) AS Total FROM fn_BalancingAdditionsCanadian'
WHERE Description LIKE '%FROM fn_BalancingAdditionsCanadian%'
。
+1 ClearTraceはここに行く方法です。それは使いやすく、あなたが扱っている問題を解決するために特別に作られています。 –
願わくば唯一の方法ではありません。 –
私は何度もClearTraceを使用しましたが、そのエラーは発生していません –