Sql-Server-2008
確定連結伺服器的最後使用日期
我們的數據庫伺服器上有大量連結伺服器需要清理。
是否可以確定使用連結伺服器的最後日期?例如,最後一次通過它執行查詢。
您必須設置 SQL Profiler 來監控使用連結伺服器的查詢。沒有可以輕鬆監控使用情況的 DMV。
您也許可以查看 dmv sys.dm_exec_sql_text 以查看連結伺服器名稱最後在 sql 語句中使用的位置。
set transaction isolation level read uncommitted SELECT (SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 , ( (CASE WHEN statement_end_offset = -1 THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2) ELSE statement_end_offset END) - statement_start_offset) / 2+1)) AS sql_statement, last_execution_time FROM sys.dm_exec_query_stats AS s1 CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 WHERE s2.text like '%LinkedServerName%' and last_execution_time > convert(datetime, '2011-01-01 00:00:00.000', 121) ORDER BY s1.sql_handle, s1.statement_start_offset, s1.statement_end_offset
對此有很多警告:
如果通過視圖/功能使用連結伺服器,它可能不會出現在您的結果集中
它只會包含計劃記憶體中的任何 sql
- 計劃記憶體在重新啟動時被清除
- 一旦達到大小限制,SQL Server 將從記憶體中清除舊計劃
***注意:*如果您確實對其進行了調整併使其正常工作,請更改上面的 sql