数据库 D1 中有一个视图 View1 ,其中有 Column1 列, Column2 , Column3
视图 View1 被存储在存储过程 PROC1 中的另一个数据库 D2 中。强>
存储过程 PROC1 中仅使用 Column2 ,而未使用其他列
视图 View1 被存储在存储过程 PROC2 中的另一个数据库 D3 中。强>
在存储过程 PROC2 中使用了 Column1 和 Column2 ,而未使用其他列
我们如何确定 View1 的哪一列在存储过程 PROC1 , PROC2 中被占用使用查询。
我有将近100个视图在多个数据库中使用,我需要知道存储过程在其各自的数据库中使用了哪些所有列。
答案 0 :(得分:0)
您可以执行:
exec sp_depends'视图名称'
这将返回所有引用该视图的对象(包括过程)。您必须检查命名的proc本身,以确定该过程中使用了哪些列。
答案 1 :(得分:0)
在数据库中,您可以标识存储过程中column1的使用位置:
DECLARE @Search VARCHAR(255)
SET @Search = 'Column1'
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 '%' + @Search + '%'
AND type_desc = 'SQL_STORED_PROCEDURE'
ORDER BY
2, 1
如果您要查找其他数据库,请添加[differentDBname].sys.sql_modules