Afficher les dependencies du server lié sql server 2008

Est-ce que quelqu'un sait comment / s'il est possible d'afficher toutes les tables / vues / procédures stockées qui dépendent d'un server lié dans Sql Server 2008. Fondamentalement comme si le menu contextuel "View dependencies" était accessible pour les servers liés?

Toute aide très appréciée.

Merci

    Recherche le

    SELECT OBJECT_NAME(object_id), * FROM sys.sql_modules WHERE definition LIKE '%myLinkedServer%' 

    Ou utilisez la search gratuite Red Gate SQL pour faire de même avec une interface graphique

    Aucune table ou fonctionnalité ne suit les dependencies entre les objects server liés au niveau du server et les objects au niveau de la database

    Remarque: Les vues INFORMATION_SCHEMA et les messages syscomments hérités tronquent la définition et ne sont donc pas fiables pour les searchs de définition.

    Suite à la suggestion de @Mitch Wheat, voici quelques sql pour exécuter la réponse @ gbn pour tous les db sur le server. Peut-être que cela va prendre un peu de time pour quelqu'un.

     USE Master; GO IF OBJECT_ID('tempdb..#Deps') IS NOT NULL BEGIN DROP TABLE #Deps END CREATE TABLE #Deps ( [ServerName] [VARCHAR](500) NOT NULL, [DatabaseName] [VARCHAR](500) NOT NULL, [SchemaName] [VARCHAR](500) NOT NULL, [ObjectName] [VARCHAR](MAX) NULL, [ObjectId] [INT] NOT NULL, [ObjectType] [VARCHAR](500) NOT NULL, [DependsOnLinkedServer] [VARCHAR](500) NOT NULL, [definition] [VARCHAR](MAX) NULL ) IF OBJECT_ID('tempdb..#Queries') IS NOT NULL BEGIN DROP TABLE #Queries END SELECT REPLACE('INSERT INTO #Deps ( [ServerName] ,[DatabaseName] ,[SchemaName] ,[ObjectName] ,[ObjectType] ,[ObjectId] ,[DependsOnLinkedServer] ,[definition] ) SELECT @@SERVERNAME, ''?'' AS DatabaseName, s.name AS SchemaName, o.name AS ObjectName, o.type_desc AS ObjectType, m.object_id AS ObjectId, ''' + srv.name + ''' AS DependsOnLinkedServer, m.definition FROM [?].sys.sql_modules m LEFT OUTER JOIN [?].sys.objects o ON m.object_id = o.object_id LEFT OUTER JOIN [?].sys.schemas s ON o.schema_id = s.schema_id WHERE definition LIKE ''%' + srv.name + '%''', CHAR(13) + CHAR(10), '') AS Query INTO #Queries FROM sys.servers srv; GO DECLARE @Query AS VARCHAR(MAX) DECLARE LinkedServerCursor CURSOR FAST_FORWARD FOR SELECT Query FROM #Queries OPEN LinkedServerCursor FETCH NEXT FROM LinkedServerCursor INTO @Query; WHILE @@FETCH_STATUS = 0 BEGIN EXECUTE master.sys.sp_MSforeachdb @Query FETCH NEXT FROM LinkedServerCursor INTO @Query; END CLOSE LinkedServerCursor; DEALLOCATE LinkedServerCursor; GO SELECT ServerName, DatabaseName, ObjectName, '[' + ServerName + '].[' + DatabaseName + '].[' + SchemaName + '].[' + ObjectName + ']' AS QualifiedObjectName, DependsOnLinkedServer, ObjectType FROM #Deps ORDER BY ServerName, DatabaseName, ObjectName 

    Je reorderais de changer la partie du milieu de la requête pour être comme ci-dessous pour s'assurer seulement quand il est utilisé dans une requête que vous obtenez un coup. Sinon, vous obtiendrez beaucoup de faux positifs chaque fois que le nom du server est mentionné.

     WHERE definition LIKE ''%\[' + srv.name + '\].%'' or definition LIKE ''%' + srv.name + '.%''', CHAR(13) + CHAR(10), '') AS Query