décembre
2010
Pour exécuter des requêtes distribuées (requêtes entre deux serveurs liés), il est indispensable de créer un lien (link) entre le serveur émetteur de la requête et le serveur récepteur (machine qui reçoit la requête). Ce billet, propose une méthode d’identification des links en doublon présent sur une instance SQL Server. Une fois ces links en doublon identifiés, faut-il les supprimer ?
–> Afficher les LINKs
EXEC sp_linkedservers
–> Afficher les LINKs en doublon
WITH CTE_LINK_DOUBLON (name_cte
,product_cte
,provider_cte
,data_source_cte
,remote_name_cte
,provider_string_cte
,location_cte
,[catalog_cte]
,is_linked_cte
,is_remote_login_enabled_cte
,is_rpc_out_enabled_cte
,is_data_access_enabled_cte
,is_publisher_cte
,is_subscriber_cte
,is_distributor_cte) AS
(
SELECT COUNT(*)
,s.product
,s.provider
,s.data_source
,l.remote_name
,s.provider_string
,s.location
,s.[catalog]
,s.is_linked
,s.is_remote_login_enabled
,s.is_rpc_out_enabled
,s.is_data_access_enabled
,s.is_publisher
,s.is_subscriber
,s.is_distributor
FROM sys.servers s INNER JOIN sys.linked_logins l ON s.server_id = l.server_id
GROUP BY
s.product
,s.provider
,s.data_source
,l.remote_name
,s.provider_string
,s.location
,s.[catalog]
,s.is_linked
,s.is_remote_login_enabled
,s.is_rpc_out_enabled
,s.is_data_access_enabled
,s.is_publisher
,s.is_subscriber
,s.is_distributor
HAVING COUNT(*) >1
)
SELECT s.[name]
,s.product
,s.provider
,s.data_source
,l.remote_name
,s.provider_string
,s.location
,s.[catalog]
,s.is_linked
,s.is_remote_login_enabled
,s.is_rpc_out_enabled
,s.is_data_access_enabled
,s.is_publisher
,s.is_subscriber
,s.is_distributor
,s.modify_date
FROM CTE_LINK_DOUBLON c INNER JOIN sys.servers s ON c.data_source_cte = s.data_source AND c.provider_cte = s.provider
INNER JOIN sys.linked_logins l ON s.server_id = l.server_id AND c.remote_name_cte = l.remote_name
–> /!\ Avant de supprimer un Link IL FAUT BIEN S’ASSURER QU’IL N’EST PAS UTILISÉ PAR UNE APLLICATION !
–>Pour supprimer par exemple le Link SRV_DISTANT et toutes les connexions d’accès distant qui lui sont associées
EXEC sp_dropserver 'SERVEUR_DISTANT', 'droplogins';
–>Pour supprimer le mappage pour la connexion « sa » relatif au Link SERVEUR_DISTANT.
EXEC sp_droplinkedsrvlogin 'SERVEUR_DISTANT', 'sa'
–>Pour supprimer le mappage de connexion par défaut créé à l’origine par l’exécution de sp_addlinkedserver pour le Link SERVEUR_DISTANT
EXEC sp_droplinkedsrvlogin 'SERVEUR_DISTANT', NULL
–>Pour créer un LINK
http://msdn.microsoft.com/fr-fr/library/ms190479.aspx
–>Pour exécuter une requête distribuée (requête entre deux serveurs liés), l’option ‘Ad Hoc Distributed Queries’ doit être configuré
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
————————————————————————–
Auteur : Etienne ZINZINDOHOUE
————————————————————————–