Mat*_*att 25 sql-server sql-server-2005
SQL Server Server 2005.我正盯着一个拥有500多个存储过程的数据库,并试图收集它们如何与数据交互的复杂性 - 特别是关于它们如何插入/修改数据.我希望找到一个搜索"或"找到"查看实际过程内容的功能.这样,我可以搜索所有使用some_table_name执行任何操作的过程.SQL Management的基本查找功能Studio查看已打开的文件,如果我已经打开了sproc,则只在查找文件中查找内容,即使只有在...\Local Settings\Temp\~vs1011.sql临时类型文件中也是如此.
截至目前,我知道进入底层程序的唯一方法是右键单击并选择"修改"(或脚本存储过程为=>创建或更改).是否有更快/更简单的方法来搜索/检查所有的sprocs?
Jam*_*tin 26
尝试使用第三方工具,例如ApexSQL Search(免费)或SSMS Toolpack(免费),除了这里提到的那些.
我在过去继承了500多个对象数据库时遇到了类似的问题.我的经验是查询还可以,但真正有用的是第三方SSMS插件.
Bra*_*adC 24
不要使用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%'
Run Code Online (Sandbox Code Playgroud)
(如上所述,这也会返回触发器,视图和标量函数.如果需要,可以按类型排除)
G M*_*ros 15
您可以使用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'
Run Code Online (Sandbox Code Playgroud)