SQL Server联机丛书:查看存储过程

几个系统存储过程用系统表提供有关存储过程的信息。使用这些存储过程可以:

  • 查看用于创建存储过程的 Transact-SQL 语句。这对于没有用于创建存储过程的 Transact-SQL 脚本文件的用户是很有用的。

  • 获得有关存储过程的信息(如存储过程的所有者、创建时间及其参数)。

  • 列出指定存储过程所使用的对象及使用指定存储过程的过程。此信息可用来识别那些受数据库中某个对象的更改或删除影响的过程。

查看存储过程的定义

sp_helptext

显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。

语法

sp_helptext [ @objname = ] ' name '

参数

[ @objname = ] ' name '

对象的名称,将显示该对象的定义信息。对象必须在当前数据库中。 name 的数据类型为 nvarchar(776) ,没有默认值。

返回代码值

0(成功)或 1(失败)

结果集
列名数据类型描述
Textnvarchar(255)对象定义文本
注释

sp_helptext 在多个行中显示用来创建对象的文本,其中每行有 Transact-SQL 定义的 255 个字符。这些定义只驻留在当前数据库的 syscomments 表的文本中。

权限

执行权限默认授予 public 角色。

示例

下面的示例显示 employee_insupd 触发器的文本,该触发器在数据库 pubs 中。

USE pubs
EXEC sp_helptext 'employee_insupd'

查看有关存储过程的信息 sp_help

报告有关数据库对象( sysobjects 表中列出的任何对象)、用户定义数据类型或 Microsoft® SQL Server™ 所提供的数据类型的信息。

语法

sp_help [ [ @objname = ] name ]

参数

[ @objname = ] name

sysobjects 中的任意对象的名称,或者是在 systypes 表中任何用户定义数据类型的名称。 Name 的数据类型为 nvarchar(776) ,默认值为 NULL。不能使用数据库名称。

返回代码值

0(成功)或 1(失败)

结果集

返回的结果集取决于 name 是否已指定、何时指定以及它是何种数据库对象等因素。

  1. 如果执行不带参数的 sp_help ,则返回当前数据库中现有的所有类型对象的摘要信息。 列名数据类型描述
    Namenvarchar(128)对象名
    Ownernvarchar(128)对象所有者
    Object_typenvarchar(31)对象类型
  2. 如果 name 是 SQL Server 数据类型或用户定义数据类型,则 sp_help 返回此结果集。 列名数据类型描述
    Type_namenvarchar(128)数据类型名称。
    Storage_typenvarchar(128)SQL Server 类型名称。
    Lengthsmallint数据类型的物理长度(以字节为单位)。
    Precint精度(总的数字位数)。
    Scaleint小数点右边的数字位数。
    Nullablevarchar(35)指明是否允许 NULL 值:是或否。
    Default_namenvarchar(128)绑定到该类型的默认值名称。如果没有绑定默认值,则为 NULL。
    Rule_namenvarchar(128)绑定到该类型的规则名称。如果没有绑定默认值,则为 NULL。
    Collationsysname数据类型的排序规则。如果是非字符数据类型,则为 NULL。
  3. 如果 name 是任意数据库对象(而不是数据类型),那么 sp_help 将返回此结果集,以及基于指定对象类型的其它结果集。 列名数据类型描述
    Namenvarchar(128)表名
    Ownernvarchar(128)表的所有者
    Typenvarchar(31)表的类型
    Created_datetimedatetime创建的日期表

根据指定的数据库对象, sp_help 返回其它结果集。

如果 name 是系统表、用户表或者视图,则 sp_help 返回这些结果集(例外,对于视图,不返回描述数据文件在文件组中所处位置的结果集)。

1. 按列对象返回其它结果集:  列名  |  数据类型  |  描述   

---|---|---
Column_name | nvarchar(128) | 列名。
Type | nvarchar(128) | 列数据类型。
Computed | varchar(35) | 指出是否计算了在列中的值:(是或否)。
Length | int | 以字节为单位的列长度。
Prec | char(5) | 列精度。
Scale | char(5) | 列数值范围。
Nullable | varchar(35) | 指出在列中是否允许 NULL 值:是或否。
TrimTrailingBlanks | varchar(35) | 剪裁尾随空格(是或否)。
FixedLenNullInSource | varchar(35) | 只是为了向后兼容。
Collation | sysname | 列的排序规则。如果是非字符数据类型,则为 NULL。

2. 按标识列返回的其它结果集:  列名  |  数据类型  |  描述   

---|---|---
Identity | nvarchar(128) | 其数据类型被声明为标识的列名。
Seed | numeric | 标识列的起始值。
Increment | numeric | 此列中的值所使用的增量。
Not For Replication | int | 当重复登录(例如 sqlrepl )试图在表中插入数据时,无法强制使用 IDENTITY 属性:
1 = True
0 = False

3. 按列返回的其它结果集:  列名  |  数据类型  |  描述   

---|---|---
RowGuidCol | sysname | 全局唯一标识符列的名称。

4. 按文件组返回的其它结果集:  列名  |  数据类型  |  描述   

---|---|---
Data_located_on_filegroup | nvarchar(128) | 数据所在的文件组(主要文件组、次要文件组或事务日志)。

5. 按索引返回的其它结果集:  列名  |  数据类型  |  描述   

---|---|---
index_name | sysname | 索引名。
index_description | varchar(210) | 索引的描述。
index_keys | nvarchar(2078) | 生成索引所在列的列名。

6. 按约束返回的其它结果集  列名  |  数据类型  |  描述   

---|---|---
constrain_type | nvarchar(146) | 约束的类型。
constrain_name | nvarchar(128) | 约束名。
delete_action | nvarchar(9) | 指明 DELETE 操作是:无操作、层叠或暂缺。

(仅适用于 FOREIGN KEY 约束。)

update_action | nvarchar(9) | 指明 UPDATE 操作是:无操作、层叠或暂缺。

(仅适用于 FOREIGN KEY 约束。)

status_enabled | varchar(8) | 指明是否启用约束:启用、禁用或暂缺。(仅适用于 CHECK 和 FOREIGN KEY 约束。)
Status_for_replication | varchar(19) | 指明约束是否用于复制。(仅适用于 CHECK 和 FOREIGN KEY 约束。)
constrain_keys | nvarchar(2078) | 构成约束的列名。或者(对于默认值和规则而言)指定义默认值或规则的文本。

7. 按引用对象返回的其它结果集:  列名  |  数据类型  |  描述   

---|---|---
Table is referenced by | nvarchar(516) | 识别引用表的其它数据库对象。

  1. 如果 name 是系统存储过程或扩展存储过程,那么 sp_help 将返回此结果集。 列名数据类型描述
    Parameter_namenvarchar(128)存储过程参数名。
    Typenvarchar(128)存储过程参数的数据类型。
    Lengthsmallint最大物理存储长度(以字节为单位)。
    Precint精度(总的数字位数)。
    Scaleint小数点右边的数字个数。
    Param_ordersmallint参数的顺序。
注释

sp_help 过程仅在当前数据库中查找对象。

当没有指定 name 时, sp_helptrigger 列出当前数据库中所有对象的名称、所有者和对象类型。 sp_helptrigger 提供有关触发器的信息。

权限

执行权限默认授予 public 角色。

示例
A. 返回有关所有对象的信息

下面的示例列出有关 sysobjects 中每个对象的信息。

USE master
EXEC sp_help
B. 返回有关单个对象的信息

下面的示例显示有关 publishers 表的信息。

USE pubs
EXEC sp_help publishers

查看存储过程的相关性

sp_depends

显示有关数据库对象相关性的信息(例如,依赖表或视图的视图和过程,以及视图或过程所依赖的表和视图)。  
不报告对当前数据库以外对象的引用。

##### 语法

 **sp_depends** [ **@objname =** ] **'** _object_ **'**

##### 参数

[ **@objname** **=** ] **'** _object_ **'**

 被检查相关性的数据库对象。对象可以是表、视图、存储过程或触发器。 _Object_ 的数据类型为 **varchar(776)** ,没有默认值。

##### 返回代码值

0(成功)或 1(失败)

##### 结果集

 **sp_depends** 显示两个结果集。

下面的结果集显示 _object_ 所依赖的对象。

列名| 数据类型| 描述  
---|---|---  
 **name**|  **nvarchar(40)**|  存在相关性的项目名称。  
 **type**|  **nvarchar(16)**|  项目类型。  
 **updated**|  **nvarchar(7)**|  是否更新项目。  
 **selected**|  **nvarchar(8)**|  项目是否用于 SELECT 语句。  
 **column**|  **sysname**|  存在相关性的列或参数。  
  


下面的结果集显示依赖 _object_ 的对象。

列名| 数据类型| 描述  
---|---|---  
 **name**|  **nvarchar(40)**|  存在相关性的项目名称。  
 **type**|  **nvarchar(16)**|  项目类型。  
  


##### 注释

若一个对象引用另一个对象,则认为前者依赖后者。 **sp_depends** 通过查看 **sysdepends** 表确定相关性。

##### 权限

执行权限默认授予 **public** 角色。

##### 示例

下面的示例列出依赖 **Customers** 表的数据库对象。


USE Northwind
EXEC sp_depends 'Customers'  



 **查看关于扩展存储过程的信息**


# sp_helpextendedproc

显示当前定义的扩展存储过程,以及此过程(函数)所属动态链接库的名称。

##### 语法

 **sp_helpextendedproc** [ [ **@funcname =** ] **'** _procedure_ **'** ]

##### 参数

[ **@funcname =** ] **'** _procedure_ **'**

 是要显示其信息的扩展存储过程的名称。 _procedure_ 的数据类型为 **sysname** ,默认值为 NULL。

##### 返回代码值

0(成功)或 1(失败)

##### 结果集

列名| 数据类型| 描述  
---|---|---  
 **name**|  **sysname**|  扩展存储过程的名称。  
 **dll**|  **nvarchar(255)**|  动态链接库的名称。  
  


##### 注释

指定 _procedure_ 时, **sp_helpextendedproc** 报告指定扩展存储过程的信息。不提供 _procedure_ 时,  
 **sp_helpextendedproc** 返回全部扩展存储过程的名称,以及每个扩展存储过程所属的 DLL 名称。

##### 权限

执行权限默认授予 **public** 角色。

##### 示例

###### A. 报告所有扩展存储过程的帮助

下面的示例报告所有扩展存储过程的信息。


USE master
EXEC sp_helpextendedproc
B. 报告单个扩展存储过程的帮助

下面的示例报告 xp_cmdshell 扩展存储过程的信息。

USE master
EXEC sp_helpextendedproc xp_cmdshell  
  
转自: http://goaler.xicp.net/ShowLog.asp?ID=517
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus