Recherche de toutes les vues utilisant le server lié

Je suis en train de mettre à jour l'URL pour les servers liés. Avant de faire les changements, je voudrais connaître toutes les vues qui ont une reference à ces servers liés. Existe-t-il un moyen programmatique (TSQL) pour effectuer cette tâche?

Merci de votre aide.

J'utilise SQL Server 2005, 2008 et 2012. Les servers de database qui referencent les servers liés sont principalement SQL Server 2005

Bien qu'il puisse renvoyer des faux positifs et ne capture aucun cas où un nom en quatre parties est construit à l'aide de SQL dynamic, il s'agit probablement de l'approche la plus simple:

SELECT name FROM sys.views WHERE LOWER(OBJECT_DEFINITION([object_id])) LIKE LOWER('%LinkedServerName%'); 

Si vous avez besoin de find des objects de database (par exemple, tables, colonnes, sortingggers) par nom, jetez un coup d'œil à l'outil GRATUIT Red-Gate appelé SQL Search, qui search toute sorte de string.

entrez la description de l'image ici

entrez la description de l'image ici

C'est un outil incontournable pour tout développeur DBA ou database – ai-je déjà mentionné qu'il est absolument GRATUIT à utiliser pour tout type d'utilisation?

Cela va find les vues:

 SELECT t2.srvname, OBJECT_DEFINITION(t1.[object_id]) view_definition FROM sys.views t1 join sys.servers t2 on OBJECT_DEFINITION(t1.[object_id]) like '%['+ t2.srvname + '].%' ESCAPE '[' 

Il peut échouer si une table, une vue, un schéma ou une database porte le même nom qu'un server lié.

Dans le cas où certaines vues ont échappé à la première vérification que vous pouvez append cette ligne, cette partie ne vérifie pas les crochets entourant le nom du server lié. Mais sachez que cette partie est plus susceptible d'inclure des vues supplémentaires non désirées

 or OBJECT_DEFINITION(t1.[object_id]) like '% '+ t2.srvname + '.%' 

EDIT: a changé sys.sysservers en sys.servers. Merci Aaron Bertrand

Essaye ça:

 SELECT name, OBJECT_DEFINITION([object_id]) FROM sys.views where OBJECT_DEFINITION([object_id]) like '%.%.dbo.%'