Je travaille avec SQL Server 2008 et j'ai une base de données qui compte plus de 1500 colonnes et environ 500 procédures stockées et ....
Je veux renommer une table qui a plusieurs relations et qui 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.
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 œil au [~ # ~] gratuit [~ # ~] Outil 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 DBA ou développeur de base de données - ai-je déjà mentionné qu'il est absolument [~ # ~] gratuit [~ # ~] pour utiliser pour tout type d'utilisation ??
En utilisant 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.table, par exemple 'dbo.MyTable'
C'est une autre solution que j'ai trouvée. Vous n'avez pas besoin d'installer d'outils. Il suffit de lancer l'analyseur de requêtes.
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