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.
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).
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??
À 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
Où 'mySchemaName.myTableName'
est votre schéma.tableau, par exemple 'dbo.MyTable'
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