SQL Serverデータベースで次のクエリを実行しました。cでSQLクエリテキストを正規化する
SELECT * FROM Production.Product WHERE Name = 'Bearing Ball'
は、それから私は、次のSQLコマンドを使用して統計と一緒にクエリテキストを取得しようとしました:
SELECT
qs.sql_handle,
qs.execution_count AS EXECUTION_COUNT,
AVG_TIME = --Converted from microseconds
(qs.total_elapsed_time/1000000)/qs.execution_count,
qs.total_elapsed_time,
TOTAL_TIME = --Converted from microseconds
qs.total_elapsed_time/1000000,
st.text AS TEXT
FROM
sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS apply sys.dm_exec_query_plan (qs.plan_handle) AS qp
ORDER BY qs.total_worker_time DESC
私はこの
ような何かを得る。しかし、私が実行したいです私のC#プログラムからの文字列の一致とクエリテキストの統計情報を取得します。 C#プログラムは元のクエリ(SELECT * FROM Production.Product WHERE Name = 'Bearing Ball')のみを知っています。置き換えられるパラメータは唯一の問題ではありません。データベースサーバがテーブル名に角括弧を追加しているのがわかるからです。
この問題を解決する方法はありますか? SELECT * FROM [Production]。[Product] WHERE [Name] = @(varchar(8000))を正規化した正規表現に変換するにはどうすればよいですか? 1)? Microsoft.Data.Schema.ScriptDomを使用してこれを行うことはできますか?データベースサーバーでクエリを実行せずにクエリを正規化する必要があることに注意してください。
クエリは第三者アプリケーションからも実行されるため、すべてのクエリの統計情報を取得できるように、クエリを汎用フォーマットに変換できる方が良いでしょう。 – Deepan