簡體   English   中英

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

[英]What is the best way to find DML references to objects in SQL Server?

我一直在努力解決的問題是在我工作的公司中找到對 SQL 服務器中表的 DML 引用。 我們將代碼保存在 TFS 源代碼管理中並部署到共享開發環境中,因此我可以使用文件搜索或 t-sql 代碼進行搜索。 我面臨的挑戰是我可以輕松找到對表名的所有引用,但我找不到進一步過濾到特定語句(如 UPDATE/INSERT/MERGE)的好方法。

一個很大的挑戰是我工作的公司有很多動態 SQL,所以我認為最好的方法是某種形式的文本搜索。 另一個挑戰是編碼是按照每個開發人員認為合適的方式編寫的,因此不會在整個代碼庫中以任何“標准”方式編寫 UPDATE 語句 - 即表名可以與 DML 語句在同一行或單獨的線。

我已經能夠在 Visual Studio 中使用一些基本的正則表達式搜索來查找關鍵字與表名在同一行的實例,但我不知道如何搜索它是“關閉”。

有沒有其他人遇到過這個問題並找到了搜索這些信息的好方法? 我想要的是一個工具,您可以在其中輸入 t-sql 保留關鍵字和對象名稱,並且該工具會向您顯示所有引用。

至少查看視圖、SP、函數等所有代碼的一種方法是運行以下命令:

--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 或 Notepad++ 中輕松搜索。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM