sp_help (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例

报告有关数据库对象(兼容性视图中列出的 sys.sysobjects 任何对象)、用户定义的数据类型或数据类型的信息。

Transact-SQL 语法约定

语法

sp_help [ [ @objname = ] N'objname' ]
[ ; ]

参数

[ @objname = ] N'objname'

表中任何对象的名称或 sys.sysobjects 用户定义的数据类型 sys.systypes@objname为 nvarchar(776),默认值为 NULL. 数据库名称是不能接受的。 可以分隔两个或三个部分名称,例如 Person.AddressType[Person].[AddressType]

返回代码值

0(成功)或 1(失败)。

结果集

返回的结果集取决于 是否指定了@name 、指定时间以及指定的数据库对象。

  1. 如果没有 sp_help 参数执行,则返回当前数据库中存在的所有类型的对象的摘要信息。

    列名称 数据类型 描述
    Name nvarchar(128) Object name
    Owner nvarchar(128) 对象所有者(拥有对象的数据库主体。默认为包含对象的架构的所有者。
    Object_type nvarchar(31) 对象类型
  2. 如果 @name 是 SQL Server 数据类型或用户定义的数据类型, sp_help 则返回此结果集。

    列名称 数据类型 描述
    Type_name nvarchar(128) 数据类型名称。
    Storage_type nvarchar(128) SQL Server 类型名称。
    Length smallint 数据类型的物理长度(以字节为单位)。
    Prec int 精度(数字总位数)。
    Scale int 十进制右侧的数字数。
    Nullable varchar(35) 指示是允许值: Yes No还是 NULL
    Default_name nvarchar(128) 绑定到此类型的默认值的名称。

    NULL = 未绑定默认值。
    Rule_name nvarchar(128) 绑定到此类型的规则的名称。

    NULL = 未绑定默认值。
    Collation sysname 数据类型的排序规则。 NULL 对于非字符数据类型。
  3. 如果 @name 是数据类型以外的任何数据库对象, sp_help 则根据指定的对象类型返回此结果集和其他结果集。

    列名称 数据类型 描述
    Name nvarchar(128) 表名称
    Owner nvarchar(128) 表所有者
    Type nvarchar(31) 表类型
    Created_datetime datetime 表的创建日期

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

    如果 @name 是系统表、用户表或视图, sp_help 则返回以下结果集。 但是,描述数据文件在文件组上的位置的结果集不会为视图返回。

    • 还会对列对象返回以下结果集:

      列名称 数据类型 描述
      Column_name nvarchar(128) 列名称。
      Type nvarchar(128) 列数据类型。
      Computed varchar(35) 指示是否计算列中的值: YesNo
      Length int 以字节为单位的列长度。

      注意:如果列数据类型是大型值类型(varchar(max)、nvarchar(max)varbinary(max)xml),则值将显示为 -1
      Prec char(5) 列精度。
      Scale char(5) 列小数位数。
      Nullable varchar(35) 指示是否 NULL 允许在列中指定值: YesNo
      TrimTrailingBlanks varchar(35) 剪裁尾随空格。 返回 YesNo
      FixedLenNullInSource varchar(35) 此参数已弃用,并维护脚本的向后兼容性。
      Collation sysname 列的排序规则。 NULL 对于非字符数据类型。
    • 标识列还返回以下结果集:

      列名称 数据类型 描述
      Identity nvarchar(128) 其数据类型被声明为标识的列名。
      Seed numeric 标识列的起始值。
      Increment numeric 用于此列中的值的增量。
      Not For Replication int IDENTITY 复制登录名(如 sqlrepl)将数据插入表中时,不会强制实施属性:

      1 = True
      0 = False
    • 还会对列返回以下结果集:

      列名称 数据类型 描述
      RowGuidCol sysname 全局唯一标识符列的名称。
    • 文件组还返回以下结果集:

      列名称 数据类型 描述
      Data_located_on_filegroup nvarchar(128) 数据所在的文件组:Primary、或SecondaryTransaction Log
    • 索引上还返回以下结果集:

      列名称 数据类型 描述
      index_name sysname 索引名。
      Index_description varchar(210) 索引的说明。
      index_keys nvarchar(2078) 要生成索引的列的列名。 NULL返回内存优化列存储索引。
    • 还对约束返回以下结果集:

      列名称 数据类型 描述
      constraint_type nvarchar(146) 约束的类型。
      constraint_name nvarchar(128) 约束的名称。
      delete_action nvarchar(9) 指示操作是DELETE其中之一CASCADENO_ACTION、还是SET_NULLSET_DEFAULTN/A

      仅适用于 FOREIGN KEY 约束。
      update_action nvarchar(9) 指示操作是UPDATE其中之一CASCADENO_ACTION、还是SET_NULLSET_DEFAULTN/A

      FOREIGN KEY仅适用于约束。
      status_enabled varchar(8) 指示是否启用约束: EnabledDisabledN/A

      CHECK仅适用于和FOREIGN KEY约束。
      status_for_replication varchar(19) 指示约束是否用于复制。

      CHECK仅适用于和FOREIGN KEY约束。
      constraint_keys nvarchar(2078) 构成约束的列的名称。对于默认值和规则而言,则为定义默认值或规则的文本。
    • 引用对象时还会返回以下结果集:

      列名称 数据类型 描述
      Table is referenced by nvarchar(516) 标识引用表的其他数据库对象。
    • 以下结果集也会在存储过程、函数或扩展存储过程上返回。

      列名称 数据类型 描述
      Parameter_name nvarchar(128) 存储过程参数名。
      Type nvarchar(128) 存储过程参数的数据类型。
      Length smallint 最大物理存储长度(以字节为单位)。
      Prec int 精度,即数字总位数。
      Scale int 小数点右边的数字位数。
      Param_order smallint 参数的顺序。

注解

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

如果未指定@namesp_help则列出当前数据库中所有对象的对象名称、所有者和对象类型。 sp_helptrigger 提供有关触发器的信息。

sp_help 仅公开可排序索引列;因此,它不会公开有关 XML 索引或空间索引的信息。

权限

要求 公共 角色具有成员身份。 用户必须至少对@objname拥有一个权限。 若要查看列约束键、默认值或规则,您必须对表具有 VIEW DEFINITION 权限。

示例

本文中的 Transact-SQL 代码示例使用 AdventureWorks2022AdventureWorksDW2022 示例数据库,可从 Microsoft SQL Server 示例和社区项目主页下载它。

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

以下示例将列出有关 master 数据库中每个对象的信息。

USE master;
GO
EXEC sp_help;
GO

B. 返回有关单个对象的信息

以下示例将显示有关 Person.Person 表的信息。

USE AdventureWorks2022;
GO
EXEC sp_help 'Person.Person';
GO