首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server代码搜索工具

SQL Server代码搜索工具
EN

Stack Overflow用户
提问于 2009-11-18 12:28:59
回答 3查看 442关注 0票数 0

我想在所有存储过程中搜索子字符串"x“的出现,我能在SQL2000、2005、2008中这样做吗?

..without有没有加载项?

如果不是,最好的免费插件是什么?

抱歉的。我应该提到,我知道如何使用sysobjects数据来做到这一点。但在我看来,在这个功能之前应该有一个很好的GUI!

例如,如下所示:

http://screencast.com/t/Y2Q0YmU0Nzkt

EN

回答 3

Stack Overflow用户

发布于 2009-11-18 12:33:22

还回答了here

来自http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=32319

代码语言:javascript
复制
CREATE PROCEDURE sp_FindText @text varchar(8000), @findtype varchar(1)='P' AS
SET NOCOUNT ON
IF @findtype='P' SELECT DISTINCT Len(SubString(text,1, PatIndex('%' + @text + '%', text)))-Len(Replace(SubString(text,1, PatIndex('%' + @text + '%', text)),char(13),''))+1 AS Line,
--PatIndex('%' + @text + '%', text) AS Position,
OBJECT_NAME(id) AS ProcName
FROM syscomments
WHERE text like '%' + @text + '%'
ORDER BY ProcName, Line

IF @findtype='C' EXEC('SELECT TABLE_NAME + ''.'' + COLUMN_NAME AS TableColumn FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE ''%' + @text + '%'' ORDER BY TableColumn')

IF @findtype='T' EXEC('SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ''%' + @text + '%'' ORDER BY TABLE_NAME')
GO

它不仅搜索过程和视图定义文本,还将查找表、视图和列名:

代码语言:javascript
复制
EXEC sp_FindText 'myTable' --or-- EXEC sp_FindText 'myTable', 'P' --finds procedures/views containing 'myTable' in their definition/code
EXEC sp_FindText 'myTable', 'T' --finds tables/views containing 'myTable' in their name
EXEC sp_FindText 'myCol', 'C' --finds columns containing 'myCol' in their name
票数 2
EN

Stack Overflow用户

发布于 2009-11-18 13:04:26

对于SQL Server2005和2008,请使用提供nvarchar(max)输出的sys.sql_modulesOBJECT_DEFINITION

代码语言:javascript
复制
SELECT OBJECT_NAME(object_id) FROM sys.sql_modules WHERE definition LIKE @MyString
SELECT name FROM sys.objects WHERE OBJECT_DEFINITION(object_id) LIKE @MyString

对于SQL Server2000,您必须使用系统注释或INFORMATION_SCHEMA.ROUTINES,但它们提供了nvarchar(4000),因此不可靠的也是如此。您必须将sys.comments连接成一个文本值并进行搜索(坦率地说,我已经忘记如何去做了)

提到完全相同问题的其他问题

票数 1
EN

Stack Overflow用户

发布于 2009-11-18 12:32:57

如果我是您,我不会使用工具-只需运行脚本为您进行搜索,即以下SQL脚本将搜索db中存储的所有procs以查找字符串

代码语言:javascript
复制
Declare @search varchar(128)

SET @search = '%' + 'search text' + '%'


/***************************************************************************/

SELECT o.name As "Stored Procedures"

            FROM SYSOBJECTS o INNER JOIN SYSCOMMENTS c
                        ON o.id = c.id
            WHERE c.text LIKE @search
                        AND o.xtype = 'P'
            GROUP BY o.name
            ORDER BY o.name

/**************************************************************************/

在本例中,xtype 'P‘指的是存储过程

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1753642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档