在SQL Server中查找对象的DML引用的最佳方法是什么?

时间:2015-11-20 10:39:16

标签: sql sql-server tsql

我一直在努力解决的问题是在我工作的公司的SQL服务器中找到对表的DML引用。我们将代码保存在TFS源代码控制中并部署到共享开发环境,以便我可以使用文件搜索或t-sql代码进行搜索。我遇到的挑战是我可以很容易地找到对表名的所有引用,但是我找不到进一步过滤到UPDATE / INSERT / MERGE等特定语句的好方法。

这方面的一个巨大挑战是我工作的公司有很多动态SQL,所以我认为最好的方法是某种形式的文本搜索。另一个挑战是编码是在每个开发人员认为合适时编写的,因此UPDATE语句不会在整个代码库中以任何“标准”方式编写 - 即表名可以与DML语句位于同一行,也可以单独写在线。

我已经能够在Visual Studio中使用一些基本的正则表达式搜索来查找关键字与表名在同一行的实例,但我不知道如何搜索它是“关闭”。

是否有其他人遇到此问题并找到了搜索此信息的好方法?我喜欢的是一个工具,你可以在其中放入一个t-sql保留关键字和一个对象名称,该工具会显示所有引用。

1 个答案:

答案 0 :(得分:0)

至少查看View,SP,Functions等中所有代码的一种方法是运行此代码:

--will show you all source code from procs, views, functions etc
select *
from syscomments 

--or better to join it on sysobjects and display only view source code for example
select o.id,o.name,c.text 
from syscomments c 
    inner join sysobjects o on o.id = c.id
where o.[Type] = 'V'

找到所有这些内容后,便可以在Excel或通过记事本++轻松进行搜索。

我希望能有所帮助。