Déterminer la date de dernière utilisation d'un serveur lié
-
16-10-2019 - |
Question
Nous avons une tonne de serveurs liés sur notre serveur de base de données que nous aimerions nettoyer.
Est-il possible de déterminer la dernière date a été utilisé un serveur lié? par exemple. la dernière fois qu'une requête a été réalisée à travers elle.
La solution
Vous devrez configurer SQL Profiler pour surveiller les requêtes qui utilisent le serveur lié. Il n'y a pas que vous pouvez DMV facilement surveiller l'utilisation.
Autres conseils
peut être en mesure de regarder le dmv sys.dm_exec_sql_text à regarder où le nom du serveur lié a été utilisé la dernière fois dans une instruction 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
Beaucoup de mises en garde à cela:
- si le serveur lié est utilisé par vue / fonction, il peut ne pas apparaître dans votre jeu de résultats
- il ne comprendra que toute sql qui est dans le cache de plan
- le cache de plan est effacé au redémarrage
- SQL Server effacera les anciens plans du cache une fois les limites de taille de celui-ci sont atteint
Remarque: Si vous ne le tordre et le faire fonctionner, s'il vous plaît changer ci-dessus sql
La seule façon que vous pouvez être sûr que l'on n'est pas utilisé est de le laisser tomber. ;.) J'ai suivi les serveurs liés pendant des semaines et avait quelqu'un se plaindre en quelques heures de la laisser tomber
Vous devriez le script en premier. Faites un clic droit dans l'Explorateur d'objets et a choisi l'option appropriée.