2017-05-04 32 views
0

SQLクエリステートメントに文字列が含まれていると、SQL Server拡張イベントで確認できますか?SQL Server拡張イベント - 構文内の特定の文字列を見つける

たとえば、文字列ord_id=4を含むすべてのクエリを毎日12:00〜15:00に検索したいとします。

拡張イベントでこれをどのようにトレースできますか?

おかげで、 オハッド

セッションウィザードで

答えて

0

、開始SQL文を選択し、グローバルフィールドで、

enter image description here

と示すように、最後の画面では、あなたがフィルタリングすることができ、以下のようなSQLテキストを選択下のスクリーンショットで

enter image description here

+0

%ord_id = 4%を使用する必要がありますか? –

+0

あなたはそれが%%で動作すると言っていますか、わかりません、私はそれを長い間テストしました – TheGameiswar

+0

ord_id = 4の構文でも失敗したクエリもどうやって見つけることができますか?今、私は失敗しなかったすべてのクエリを取得します... –

1

ますあなたは*書いた場合、これはすべてのファイルを読んであなたはどこを見れする知っていれば、あなたはそれが簡単にするために、この後、ファイル名の代わりに、*

を書くことができることを意味拡張イベント

SELECT CONVERT(XML, event_data) XMLEventData FROM sys.fn_xe_file_target_read_file(N'PathForTheFile\*.xel', NULL, NULL, NULL) 

を読み取るために、このクエリを使用することができますあなたのニーズに合わせてクエリを変更する必要があります。

SELECT    

    xexml.value('(./action[@name="username"]/value)[1]', 'varchar(400)') as UserName     

    ,xexml.value('(./action[@name="client_hostname"]/value)[1]', 'varchar(400)') as Client_Hostname 

    ,xexml.value('(./action[@name="collect_system_time"]/value)[1]', 'datetime') as ProcessTime     

    ,xexml.value('(./data[@name="statement"]/value)[1]', 'nvarchar(4000)') as SQLStatement     

FROM     
(    
SELECT CONVERT(XML, event_data) XMLEventData FROM sys.fn_xe_file_target_read_file(N'PathOfYourFiles\*.xel', NULL, NULL, NULL) f 
) AS EventTable     

CROSS APPLY XMLEventData.nodes('/event') n (xexml)     
WHERE cast(xexml.value('(./action[@name="collect_system_time"]/value)[1]', 'datetime')as time) between '12:00:00' and '15:00:00' 
AND xexml.value('(./data[@name="statement"]/value)[1]', 'nvarchar(4000)') like '%ord_id=4%' 
関連する問題