Skip to content

Instantly share code, notes, and snippets.

@tcartwright
Last active February 12, 2021 19:36
Show Gist options
  • Select an option

  • Save tcartwright/bfb301cca65685a6b9af681523b198ff to your computer and use it in GitHub Desktop.

Select an option

Save tcartwright/bfb301cca65685a6b9af681523b198ff to your computer and use it in GitHub Desktop.
SQL SERVER: List cross database dependencies
IF OBJECT_ID('tempdb..#CrossDbRefs') IS NOT NULL BEGIN
DROP TABLE #CrossDbRefs
END
CREATE TABLE [#CrossDbRefs](
[referencing_database_name] SYSNAME NOT NULL,
[referencing_object] SYSNAME NULL,
[referencing_object_type] VARCHAR(20) NULL,
[referenced_database_name] SYSNAME NULL,
[referenced_entity_name] SYSNAME NULL
);
INSERT INTO #CrossDbRefs
( [referencing_database_name], [referencing_object], [referencing_object_type], [referenced_database_name], [referenced_entity_name] )
EXEC [sys].[sp_MSforeachdb] @command1 = N'
USE [?]
IF DB_ID() <= 4 RETURN
SELECT
DBName = DB_NAME(),
referencing_object = CONCAT(OBJECT_SCHEMA_NAME (sed.referencing_id), ''.'', OBJECT_NAME (sed.referencing_id)),
[referencing_object_type] = cast(OBJECTPROPERTYEX(sed.[referencing_id], ''BaseType'') AS varchar(20)),
sed.referenced_database_name,
CONCAT(sed.referenced_schema_name, ''.'', sed.referenced_entity_name)
FROM sys.sql_expression_dependencies sed
WHERE sed.referenced_database_name IS NOT NULL
AND sed.is_ambiguous = 0
AND sed.referenced_database_name <> DB_NAME()
'
SELECT * FROM #CrossDbRefs
IF OBJECT_ID('tempdb..#CrossDbRefs') IS NOT NULL BEGIN
DROP TABLE #CrossDbRefs
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment