sql-server-2005 - SQL Server 将存储过程代码存储在哪里?

标签 sql-server-2005 stored-procedures

我曾经需要存储过程的行来跟踪我是否引用了某些函数、过程或表,或者有时尝试在 sp 代码中查找某些内容。

SQL Server 在哪里存储过程的代码?

最佳答案

使用sys.sql_modules,因为definitionnvarchar(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/

相关文章:

asp.net - 在前端捕获从 sql server 存储过程返回的错误消息

sql-server - 使用单独架构上的 View 时,“对象的 SELECT 权限被拒绝”

sql - 将 SQL Server 数据库转换为 MYSQL 数据库

sql-server - SQL Server 存储过程中的参数问题

java - 如何从 Java 和 JPA 调用存储过程

Mysql 存储过程

java - 使用带 REF_CURSOR 的存储过程的 Spring 存储库

sql - 如何在表字段中添加not null

sql-server-2005 - SQL Server 2005表变量更新问题

sql - 消息 102,级别 15,状态 1,过程 <procedure_name>,第 40 行 '(' 附近的语法不正确