查找其他数据库的参考

Pet*_*etr 3 t-sql sql-server stored-procedures

在 SQL Server 数据库中,我需要查找包含对其他数据库的引用的所有存储过程和视图。(我需要用同义词替换它们。)

我有很多存储过程,我不想手动搜索它们。

有什么想法如何轻松找到它们吗?

Aar*_*and 6

根据 SQL Server 的版本,您可能还会在此查询中找到值:

SELECT OBJECT_SCHEMA_NAME(referencing_id), OBJECT_NAME(referencing_id) 
  FROM sys.sql_expression_dependencies
  WHERE referenced_database_name = 'YourDatabaseName';
Run Code Online (Sandbox Code Playgroud)

实际上,您需要结合搜索视图和过程(正如 @M_M 指出的那样),并且您可能需要清除一些。例如,如果您的数据库名称是一个可能因其他原因自然出现在模块中的字符串,则 sys.sql_modules 将显示误报。但是,例如,当数据库名称嵌入动态 SQL 中时,此答案将找不到数据库名称。