查找SQL Server数据库中对象的所有引用

Mal*_*tre 20 sql-server ssms visual-studio

我正在尝试查找SQL Server数据库中对象的所有引用.

我怎样才能快速搜索?SQL Server Management Studio似乎没有这样做.我使用http://www.red-gate.com/products/SQL_Search/但我想找到"官方"微软解决方案.它是在另一种产品中吗?

例如,当我在visual studio中进行大规模搜索时,我希望能够在所有存储过程中找到一些东西.

或者也许我不是以正确的方式编码?

卡尔

OMG*_*ies 39

使用:

select object_name(m.object_id), m.*
  from sys.sql_modules m
 where m.definition like N'%name_of_object%'
Run Code Online (Sandbox Code Playgroud)

...因为SYSCOMMENTS并且INFORMATION_SCHEMA.routines有nvarchar(4000)列.因此,如果在位置3998使用"name_of_object",则无法找到它.SYSCOMMENTS确实有多行,但INFORMATION_SCHEMA.routines截断.


Dav*_*ble 6

聚会已经很晚了,但是...

您可以使用系统进程sys.sp_depends

exec sys.sp_depends 'object_name'
Run Code Online (Sandbox Code Playgroud)

结果是一个表格,列出了依赖(即引用)的所有数据库对象object_name。每行包含引用对象的名称和类型,以及其他信息列,具体取决于 的类型object_name


注意:此过程是在 MS SQL Server 2008 中添加的。

请参阅:MSDN 文档

文档说这个过程可能会在未来的版本中被删除,并使用sys.dm_sql_referencing_entities代替,但它在 MS SQL 2017 中仍然存在并运行。


µBi*_*Bio 0

我不确定“微软官方”的方式,但我过去使用过SqlDigger 。不算太差。

如果您想在 VS 中执行此操作,那么您将需要项目中包含的所有过程的文本。