当前位置:  开发笔记 > 数据库 > 正文

您可以搜索SQL Server 2005存储过程内容吗?

如何解决《您可以搜索SQLServer2005存储过程内容吗?》经验,为你挑选了3个好方法。

SQL Server Server 2005.我正盯着一个拥有500多个存储过程的数据库,并试图收集它们如何与数据交互的复杂性 - 特别是关于它们如何插入/修改数据.我希望找到一个搜索"或"找到"查看实际过程内容的功能.这样,我可以搜索所有使用some_table_name执行任何操作的过程.SQL Management的基本查找功能Studio查看已打开的文件,如果我已经打开了sproc,则只在查找文件中查找内容,即使只有在...\Local Settings\Temp\~vs1011.sql临时类型文件中也是如此.

截至目前,我知道进入底层程序的唯一方法是右键单击并选择"修改"(或脚本存储过程为=>创建或更改).是否有更快/更简单的方法来搜索/检查所有的sprocs?



1> James Martin..:

尝试使用第三方工具,例如ApexSQL Search(免费)或SSMS Toolpack(免费),除了这里提到的那些.

我在过去继承了500多个对象数据库时遇到了类似的问题.我的经验是查询还可以,但真正有用的是第三方SSMS插件.



2> BradC..:

不要使用INFORMATION_SCHEMA.ROUTINES.它切断了4000个字符.从sys.sql_modules获取它.

SELECT o.type_desc AS ROUTINE_TYPE
        ,o.[name] AS ROUTINE_NAME
        ,m.definition AS ROUTINE_DEFINITION
FROM sys.sql_modules AS m
INNER JOIN sys.objects AS o
    ON m.object_id = o.object_id
WHERE m.definition LIKE '%search term here%'

(如上所述,这也会返回触发器,视图和标量函数.如果需要,可以按类型排除)



3> G Mastros..:

您可以使用Information_Schema.Routines视图.

select * 
FROM   INFORMATION_SCHEMA.ROUTINES 
WHERE  OBJECTPROPERTY(OBJECT_ID(SPECIFIC_NAME),'IsMSShipped') =0 
       and OBJECT_DEFINITION(OBJECT_ID(SPECIFIC_NAME)) like '%search term here%' 
       AND ROUTINE_TYPE='PROCEDURE'


Information_Schema.Routines具有4000个字符的限制.如果您知道存储了比此更长的proc,请使用sys.sql_modules.
推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有