我正在尝试研究为什么表中的某些列未更新。为了找到根本原因,我试图确定哪些存储过程可以更新表中的那些特定列。
所以..
如何识别将更新给定数据库中table123中的列aa,bb,cc的存储过程?
可能有许多存储过程更新此表。该表可能有许多其他列。是否可以识别?
答案 0 :(得分:1)
运行此查询
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%put text here%'
答案 1 :(得分:0)
我强烈建议您使用SQL Digger之类的工具 - 我们会定期在工作中使用此功能来搜索SP中的数据等,以确切地解决您所描述的问题(以及许多其他问题)。
Redgate也有类似的产品(SQL Search)
答案 2 :(得分:0)
如果对源代码的搜索没有结果,您可以在表格上设置触发器,然后use extended events to get the full TSQL trace of the triggering statement。
答案 3 :(得分:0)
Red Gate Software的SQL Prompt 5具有列依赖关系功能,在这种情况下可能很有用。将鼠标悬停在脚本中的列名称上,然后弹出一个窗口,其中包含使用该列的对象列表,包括存储过程。
您可以免费下载14天试用版,以查看此功能是否适合您。
保罗史蒂芬森 SQL提示项目经理