我想知道哪个存储过程有跨数据库/链接服务器调用。
我知道我可以做一些字符串搜索,数据库名称是要搜索的字符串。 其中一个例子如下
SELECT DISTINCT
o.name AS Object_Name,
o.type_desc
FROM sys.sql_modules m
INNER JOIN
sys.objects o
ON m.object_id = o.object_id
WHERE m.definition Like '%{{DBNAME}}%';
但如果可能的话我不想去搜索字符串,那么有没有其他方法可以找到可能有跨数据库/链接服务器的所有程序?
答案 0 :(得分:1)
系统视图sys.sql_expression_dependencies
提供了完整的信息:
select d.*
from sys.sql_expression_dependencies d
where d.referenced_database_name is not null
and d.is_ambiguous = 0;
然而,请注意,某些引用可能是"假的",或者更确切地说不是您所期望的。例如,XML方法也列在其中,这可能会引起一些混淆。