Red Gate 有一些非常好的工具,但我不认为他们的 Dependency Tracker 显示了表是如何受到接触它们的存储过程的影响的。
是否有任何工具可以扫描数据库并确定哪些进程从表中插入、更新或删除记录,而不是仅仅触摸\依赖它们?似乎现在应该存在这个......
Red Gate 有一些非常好的工具,但我不认为他们的 Dependency Tracker 显示了表是如何受到接触它们的存储过程的影响的。
是否有任何工具可以扫描数据库并确定哪些进程从表中插入、更新或删除记录,而不是仅仅触摸\依赖它们?似乎现在应该存在这个......
不,依赖跟踪仍然不完美。原因是过程可以通过动态 SQL 引用表,如果对象被删除并重新创建,依赖关系可能会被破坏(我已经写过依赖关系如何在这里破坏)。我所依赖的最好的“第一次扫描”是:
SELECT OBJECT_NAME([object_id])
FROM sys.sql_modules
WHERE LOWER(definition) LIKE '%table_name%';
同样,这不会找到使用动态 SQL 构建语句的对象,并且它可能会产生误报,因为它table_name
可能过于简单并且可能是其他对象或参数名称的一部分,或者仅包含在注释或注释掉的代码中。
您还可以检查使用sys.dm_exec_cached_plans
相关 DMF/DMV 引用表的计划,但请注意,这不会找到任何已从缓存中推出的计划。
使用 SQL 搜索,您可以搜索列名并找到所有使用它的存储过程。
它是第三方工具,即Red Gate SQL Search
特征
在存储过程、函数、视图等中查找 SQL 文本片段
快速导航到碰巧在服务器上的对象
查找对象的所有引用
希望这会帮助你。