在SQL Server Management Studio中,有没有一种方法可以搜索所有存储过程中的字符串?
SELECT *
FROM sys.sql_modules
WHERE definition LIKE '%yourstring%'
可以看看 RedGate的SQL搜索。 这是一个管理工作室插件,并且可以免费下载。您可以在特定数据库或整个实例中进行搜索。
我总是使用这个;
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%SEARCHSTRING%'
在我的情况下,当我搜索特定文本或关键字时,我想获取模式和存储过程的名称。我使用的代码对我有效,如下:
USE [your_DB_name];
GO
SELECT [Scehma]=schema_name(o.schema_id), o.Name
FROM sys.sql_modules m
INNER JOIN sys.objects o
ON o.object_id = m.object_id
WHERE m.definition like '%your keyword%'
GO
----------------------------------------------
| Schema | Name |
----------------------------------------------
| dbo | stored_procedure_name |
----------------------------------------------
...
and so on (if the keyword exists in more than one stored procedure)
sys.sql_modules
是唯一一个将定义作为NVARCHAR(MAX)
而不是NVARCHAR(4000)
的视图。 - LamakSELECT OBJECT_NAME(object_id), * FROM sys.sql_modules WHERE definition LIKE '%search%'
。从SQL Server 2008开始。 - johnnyRose