我正在研究用于多个存储过程的TVF。如何找到使用该TVF的所有存储过程?
答案 0 :(得分:4)
您可以搜索元数据以提及您的函数,请记住,如果这是其他地方或注释中提到的常用名称,则会产生误报,或者如果函数调用是使用动态SQL构建的,则会丢失实例。< / p>
SELECT s.name, p.name FROM sys.procedures AS p
INNER JOIN sys.schemas AS s
ON p.[schema_id] = s.[schema_id]
INNER JOIN sys.sql_modules AS m
ON p.[object_id] = m.[object_id]
WHERE m.definition LIKE N'%tvfname%';
2012年还有其他方法,但由于这个问题也被标记为2005年......
答案 1 :(得分:1)
我已经成功使用了这个;
SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE OBJECT_DEFINITION(OBJECT_ID(ROUTINE_NAME)) LIKE '%TVFn%'
最好不要搜索视图的ROUTINE_DEFINITION字段,因为它有上限。 PS - 无法在2005年测试,抱歉