我曾经需要存储过程的行来跟踪我是否引用了某些函数、过程或表,或者有时尝试在 sp 代码中查找某些内容。
SQL Server 在哪里存储过程的代码?
最佳答案
使用sys.sql_modules
,因为definition
是nvarchar(max)
,因为它不会截断长代码。
在 INFORMATION_SCHEMA.ROUTINES
中,ROUTINE_DEFINITION
列仅为 nvarchar(4000)
,因此,如果您尝试查看长过程的文本,并且您将看到它被截断。
使用它来搜索任何过程、 View 、函数中的文本:
SELECT DISTINCT
o.name AS Object_Name,o.type_desc
FROM sys.sql_modules m
INNER JOIN sys.objects o ON m.object_id=o.object_id
WHERE m.definition Like '%'+@Search+'%'
ORDER BY o.type_desc,o.name
使用它来查看给定过程、 View 、函数的文本:
select * from sys.sql_modules where object_id=object_id('YourProcedure')
关于sql-server-2005 - SQL Server 将存储过程代码存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2454537/