通过在SQL Server Management Studio 2008中搜索所有存储过程来查找字符串

dev*_*per 41 sql-server ssms

有没有办法在SQL Server Management Studio中的所有存储过程中搜索字符串?

Lam*_*mak 73

SELECT *
FROM sys.sql_modules
WHERE definition LIKE '%yourstring%'
Run Code Online (Sandbox Code Playgroud)

  • 还要获取存储过程的名称:SELECT p.name,m.*FROM sys.sql_modules m INNER JOIN sys.procedures p on m.object_id = p.object_id WHERE definition LIKE'%SEARCHSTRING%' (14认同)
  • +1不使用INFORMATION_SCHEMA和syscomments (3认同)
  • @gbn:谢谢,现在我想知道是否应该添加我的答案,`sys.sql_modules`是唯一一个定义为`NVARCHAR(MAX)`而不是`NVARCHAR(4000)的视图 (2认同)
  • 另一种获得名称_without_联接的方法是调用OBJECT_NAME:`SELECT OBJECT_NAME(object_id),* FROM sys.sql_modules WHERE definition LIKE'%search%'`,[从SQL Server 2008开始](https:// docs .microsoft.com / en-us / sql / t-sql / functions / object-name-transact-sql)。 (2认同)

squ*_*man 22

看看RedGate的SQL搜索.它是一个Management Studio插件和免费下载.您可以在给定数据库内或整个实例中进行搜索.

  • +1优秀的加载项!最重要的是:**它绝对完全免费!!** (3认同)

Mik*_*ell 16

我总是用这个;

SELECT Name
 FROM sys.procedures
 WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%SEARCHSTRING%'
Run Code Online (Sandbox Code Playgroud)