确定链接服务器的最后使用日期
-
16-10-2019 - |
题
我们希望清理的数据库服务器上有大量的链接服务器。
是否可以确定使用链接服务器的最后日期?例如,上次通过它进行查询。
解决方案
您必须设置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
您确定不使用一个人的唯一方法是将其丢弃。 ;)我已经监视了链接的服务器数周,然后有人在丢弃它的几个小时内有人抱怨。
您应该首先脚本脚本。右键单击对象资源管理器,然后选择适当的选项。
不隶属于 dba.stackexchange