我正在使用SQL 2012。
我的项目中有大型数据库结构。 我的数据库中有大约10000个存储过程。
我必须从数据库中删除一个表,有没有办法可以通过删除我的表来直接检查多少存储过程会影响。
任何帮助都会得到满足。
答案 0 :(得分:6)
使用sp_depends:
EXEC sp_depends @objname = N'yourtablename'
答案 1 :(得分:1)
如果您使用的是SQL Server Management Studio,则可以右键单击表并选择"查看依赖关系"查看依赖对象
答案 2 :(得分:1)
1)程序,视图,功能,触发器,FK - 视图依赖性。 查看依赖项将为您提供在编译阶段引用该表的所有对象。
2)程序,视图,功能,触发器
select object_name(id),*
from sys.syscomments
where text like '%tableName%'
将为您提供表名出现的对象的名称。这是一个字符串搜索。因此,如果它出现在注释或动态sql中,它也会被捕获。
***如果您正在使用从外部源接收表名的动态sql,那么这只能在执行阶段捕获。
3)工作 -
SELECT *
FROM msdb.dbo.sysjobs j
JOIN msdb.dbo.sysjobsteps js
ON js.job_id = j.job_id
WHERE js.command LIKE N'%TableName%'
将在步骤代码中为您提供找到该表的作业的名称。这也是字符串匹配搜索。
答案 3 :(得分:0)
将数据库导入新的SSDT项目。
然后,您可以右键单击对象名称并使用"查找所有引用"。
如果动态SQL可能引用了文本字符串,您可能也会想要搜索所有文件中的文本字符串。