SELECT object_name = OBJECT_NAME(D.referencing_id), O.type, O.type_desc FROM sys.sql_expression_dependencies D INNER JOIN sys.objects O ON D.referencing_id = O.object_id WHERE referenced_entity_name LIKE 'MyStoredProcedure';
Query result looks like this:
Now we can extend this query with navigation through all databases and save it as T-SQL Query Template:
DECLARE @referenced_entity SYSNAME = '<referenced_entity, sysname, ???>', @referencing_entity SYSNAME = '<referencing_entity, sysname, %>', @sql NVARCHAR(MAX) = ' SELECT server_name=NULL, database_name=NULL, object_name=NULL, object_type=NULL, object_type_desc=NULL WHERE 1=0'; SELECT @sql = @sql + REPLACE(REPLACE(REPLACE(REPLACE(' UNION ALL SELECT server_name = @@SERVERNAME, database_name = ''{database_name}'', object_name = OBJECT_NAME(D.referencing_id, {database_id}), object_type = O.type, object_type_desc = O.type_desc FROM {database_name}.sys.sql_expression_dependencies D INNER JOIN {database_name}.sys.objects O ON D.referencing_id = O.object_id WHERE D.referenced_entity_name LIKE ''{referenced_entity}'' AND OBJECT_NAME(D.referencing_id, {database_id}) LIKE ''{referencing_entity}''', '{database_id}', database_id), '{database_name}', name), '{referenced_entity}', @referenced_entity), '{referencing_entity}', @referencing_entity) FROM sys.databases WHERE state=0 /* ONLINE */ ORDER BY name; SET @sql = @sql + ' '; EXEC(@sql);
See also MSSQL - Query Templates
No comments:
Post a Comment
Note: only a member of this blog may post a comment.