Déterminer quels objets référencent une Table dans SQL Server

Je travaille avec SQL Server 2008 et j'ai une base de données qui a plus de 1500 colonnes et environ 500 procédures stockées et ... .

Je veux renommer une table qui a plusieurs relations et est référencée dans de nombreuses procédures et vues stockées et ... .

Comment puis-je obtenir tous les éléments de la base de données qui ont une relation avec cette table?

Merci.

24
demandé sur Mitch Wheat 2012-11-26 14:52:55

3 réponses

Si vous avez besoin de trouver des objets de base de données (par exemple des tables, des colonnes, des déclencheurs) par nom - jetez un oeil à l'outil FREE Red-Gate appelé SQL Search qui fait cela - il Recherche toute votre base de données pour tout type de chaîne(s).

entrez la description de l'image ici

entrez la description de l'image ici

C'est un excellent outil indispensable pour tout développeur DBA ou base de données-ai-je déjà mentionné qu'il est absolument libre à utiliser pour tout type d'utilisation??

12
répondu marc_s 2012-11-26 11:30:39

À l'Aide de sys.dm_sql_referencing_entities:

SELECT 
    referencing_schema_name, referencing_entity_name, referencing_id, 
    referencing_class_desc, is_caller_dependent
FROM 
    sys.dm_sql_referencing_entities ('mySchemaName.myTableName', 'OBJECT');
GO

'mySchemaName.myTableName' est votre schéma.tableau, par exemple 'dbo.MyTable'

34
répondu Mitch Wheat 2012-11-26 15:32:19

C'est une autre solution que j'ai trouvée. Vous n'avez pas à installer les outils. Il suffit de lancer sur query analyzer.

Use [Database]
Go

SELECT
referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID),
referencing_object_name = o.name,
referencing_object_type_desc = o.type_desc,
referenced_schema_name,
referenced_object_name = referenced_entity_name,
referenced_object_type_desc = o1.type_desc,
referenced_server_name, referenced_database_name
--,sed.* -- Uncomment for all the columns
FROM
sys.sql_expression_dependencies sed
INNER JOIN
sys.objects o ON sed.referencing_id = o.[object_id]
LEFT OUTER JOIN
sys.objects o1 ON sed.referenced_id = o1.[object_id]
WHERE
referenced_entity_name = 'SP_Pay_GetData'
order by referencing_object_name
9
répondu Pritam Jyoti Ray 2016-05-02 08:24:55