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