我正在嘗試構建XE以查明我們的哪些內部應用程序(沒有應用程序名稱,因此顯示爲.Net SQLClient數據提供程序)正在訪問特定服務器。理想情況下,我想獲取客戶端和數據庫的名稱,但不確定是否可以在一個XE中執行此操作。擴展事件 - 建立與特定應用程序名稱連接的服務器直方圖?
我覺得易用性,我會使用直方圖/ asynchronous_bucketizer,並保存什麼試圖擊中和多久的計數。然而,我似乎無法在2012年工作,更少2008年。如果我使用sqlserver.existing_connection它的作品,但只有當它連接時給我的數量。我想在白天獲得計數,並查看每臺服務器發生的頻率,因此我嘗試了preconnect_completed。這是正確的事件嗎?
另外,也是我使用XE的部分原因是,這些服務器每分鐘可以接通數千個電話。
下面是我到目前爲止所做的工作,但它只能提供當前與SSMS的匹配 - 顯然,我會將其更改爲.Net SQLClient數據提供程序。
CREATE EVENT SESSION UnknownAppHosts
ON SERVER
ADD EVENT sqlserver.existing_connection(
ACTION(sqlserver.client_hostname)
WHERE ([sqlserver].[client_app_name] LIKE 'Microsoft SQL Server Management%')
)
ADD TARGET package0.histogram
(SET slots = 50,
filtering_event_name='sqlserver.existing_connection',
source_type=1,
source='sqlserver.client_hostname'
)
WITH(MAX_DISPATCH_LATENCY =1SECONDS);
GO