我们希望清理的数据库服务器上有大量的链接服务器。

是否可以确定使用链接服务器的最后日期?例如,上次通过它进行查询。

有帮助吗?

解决方案

您必须设置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

您确定不使用一个人的唯一方法是将其丢弃。 ;)我已经监视了链接的服务器数周,然后有人在丢弃它的几个小时内有人抱怨。

您应该首先脚本脚本。右键单击对象资源管理器,然后选择适当的选项。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top