如何查找是否在存储过程中的任何insert,update或delete语句中使用了列。我使用了系统查询,但不准确。我们可以在sql management studio中手动检查它还是有任何查询?
答案 0 :(得分:2)
更简单的方法是使用 RedGate SQL搜索 。
但是,如果您愿意,可以使用INFORMATION_SCHEMA.ROUTINES和ROUTINE_DEFINITION构建查询。
编辑:
您可以使用此
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%YOUR COLUMN %'
AND ROUTINE_TYPE='PROCEDURE'
或者如果您在数据库中有多个具有相同名称的列,则可以使用此。
select DISTINCT p.name
from sys.procedures p
INNER JOIN sys.sql_dependencies d on p.object_id = d.object_id
INNER JOIN sys.tables t on t.object_id = d.referenced_major_id
INNER JOIN INFORMATION_SCHEMA.ROUTINES R ON R.ROUTINE_NAME = p.name
WHERE R.ROUTINE_DEFINITION like '%YOUR COLUMN %' AND t.name = YOURTABLE
但是,我认为你应该使用Search SQL