分享方式:


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) 物件名稱
    Owner nvarchar(128) 對象擁有者 (擁有物件的資料庫主體。預設為包含 對象的架構擁有者。
    Object_type nvarchar(31) Object type
  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) 指出是否 NULL 允許值: YesNo
    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) 資料所在的檔案群組: PrimarySecondaryTransaction 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為、、CASCADESET_NULLSET_DEFAULTN/ANO_ACTION其中一個。

      僅適用於FOREIGNKEY條件約束。
      update_action nvarchar(9) 指出動作是否UPDATE為、、CASCADESET_NULLSET_DEFAULTN/ANO_ACTION其中一個。

      僅適用於 FOREIGN KEY 條件約束。
      status_enabled varchar(8) 顯示是否開啟條件約束: EnabledDisabledN/A

      僅適用於 CHECKFOREIGN KEY 條件約束。
      status_for_replication varchar(19) 指出條件約束是否用於複寫。

      僅適用於 CHECKFOREIGN 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 索引或空間索引的相關信息。

權限

需要 public 角色的成員資格。 用戶必須至少有一個許可權才能@objname。 若要檢視數據行條件約束索引鍵、預設值或規則,您必須具有 VIEW DEFINITION 數據表的許可權。

範例

本文 Transact-SQL 程式碼範例使用 AdventureWorks2022AdventureWorksDW2022 範例資料庫,從 Microsoft SQL Server Samples 和 Community Projects (Microsoft SQL Server 範例和社群專案)首頁即可下載。

A. 傳回所有對象的相關信息

下列範例會列出資料庫中每個對象 master 的相關信息。

USE master;
GO
EXEC sp_help;
GO

B. 傳回單一對象的相關信息

下列範例會顯示數據表的相關信息 Person.Person

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