查看存储过程的定义

适用于: 是SQL Server(所有支持的版本) 是Azure SQL 数据库 是Azure SQL 托管实例 是Azure Synapse Analytics 是并行数据仓库

查看存储过程的定义

本文介绍如何在对象资源管理器中查看过程的定义,以及如何在查询编辑器中使用系统存储过程、系统函数和对象目录视图来查看过程的定义。

开始之前

Security

权限

系统存储过程: sp_helptext
要求 公共 角色具有成员身份。 系统对象定义对所有用户可见。 用户对象的定义对于对象所有者或具有下列任一权限的被授权者可见:ALTER、CONTROL、TAKE OWNERSHIP 或 VIEW DEFINITION 。

系统函数:OBJECT_DEFINITION
系统对象定义对所有用户可见。 用户对象的定义对于对象所有者或具有下列任一权限的被授权者可见:ALTER、CONTROL、TAKE OWNERSHIP 或 VIEW DEFINITION 。 db_ownerdb_ddladmindb_securityadmin 固定数据库角色的成员隐式具有这些权限。

sys.sql_modules 目录视图: sys.sql_modules
目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。 有关详细信息,请参阅 Metadata Visibility Configuration

备注

Azure Synapse Analytics 不支持系统存储过程 sp_helptext。 而是改用 sys.sql_modules 对象目录视图。 本文稍后将提供示例。

如何查看存储过程的定义

您可以使用以下项之一:

使用 SQL Server Management Studio

在对象资源管理器中查看过程的定义

  1. 在对象资源管理器中,连接到 数据库引擎 的实例,然后展开该实例。

  2. 展开 “数据库” 、过程所属的数据库以及 “可编程性”

  3. 展开“存储过程”,右键单击该过程,再选择“编写存储过程脚本为”,然后选择下列选项之一:“创建到”、“更改到”或“删除和创建到” 。

  4. 选择“新建查询编辑器窗口”。 这将显示过程定义。

使用 Transact-SQL

在查询编辑器中查看过程的定义

系统存储过程: sp_helptext

  1. 在对象资源管理器中,连接到 数据库引擎的实例。

  2. 在顶部工具栏中,选择“新建”。

  3. 在查询窗口中,输入以下使用 sp_helptext 系统存储过程的语句。 更改数据库名称和存储过程名称以引用所需的数据库和存储过程。

    USE AdventureWorks2012;  
    GO  
    EXEC sp_helptext N'AdventureWorks2012.dbo.uspLogError';  
    

系统函数:OBJECT_DEFINITION

  1. 在对象资源管理器中,连接到 数据库引擎的实例。

  2. 在顶部工具栏中,选择“新建”。

  3. 在查询窗口中,输入以下使用 OBJECT_DEFINITION 系统函数的语句。 更改数据库名称和存储过程名称以引用所需的数据库和存储过程。

    USE AdventureWorks2012;  
    GO  
    SELECT OBJECT_DEFINITION (OBJECT_ID(N'AdventureWorks2012.dbo.uspLogError'));  
    

目标目录视图:sys.sql_modules

  1. 在对象资源管理器中,连接到 数据库引擎的实例。

  2. 在顶部工具栏中,选择“新建”。

  3. 在查询窗口中,输入以下使用 sys.sql_modules 目录视图的语句。 更改数据库名称和存储过程名称以引用所需的数据库和存储过程。

    USE AdventureWorks2012;  
    GO  
    SELECT [definition]
    FROM sys.sql_modules  
    WHERE object_id = (OBJECT_ID(N'dbo.uspLogError'));  
    

另请参阅

创建存储过程
修改存储过程
删除存储过程
重命名存储过程
OBJECT_DEFINITION (Transact-SQL)
sys.sql_modules (Transact-SQL)
sp_helptext (Transact-SQL)
OBJECT_ID (Transact-SQL)