sys.fn_listextendedproperty (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

傳回資料庫物件的擴充屬性值。

Transact-SQL 語法慣例

語法

  
fn_listextendedproperty (   
    { default | 'property_name' | NULL }   
  , { default | 'level0_object_type' | NULL }   
  , { default | 'level0_object_name' | NULL }   
  , { default | 'level1_object_type' | NULL }   
  , { default | 'level1_object_name' | NULL }   
  , { default | 'level2_object_type' | NULL }   
  , { default | 'level2_object_name' | NULL }   
  )   

引數

{ default |' property_name ' |Null}
這是屬性的名稱。 property_name為 sysname 。 有效的輸入為預設值、Null 或屬性名稱。

{ default |' level0_object_type ' |Null}
這是使用者或使用者定義型別。 level0_object_type為 Varchar(128), 預設值為 Null。
有效輸入包括:

  • ASSEMBLY
  • CONTRACT
  • EVENT NOTIFICATION
  • FILEGROUP
  • MESSAGE TYPE
  • PARTITION FUNCTION
  • PARTITION SCHEME
  • REMOTE SERVICE BINDING
  • ROUTE
  • SCHEMA
  • SERVICE
  • TRIGGER
  • TYPE
  • USER
  • NULL

重要

未來的 SQL Server 版本將會移除 USER 和 TYPE 作為層級 0 類型。 請避免在新的開發工作中使用這些功能,並規劃修改目前使用這些功能的應用程式。 使用 SCHEMA 作為層級 0 類型,而不是 USER。 針對 TYPE,請使用 SCHEMA 作為層級 0 類型,並使用 TYPE 作為層級 1 類型。

{ default |' level0_object_name ' |Null }
這是指定的層級 0 物件類型名稱。 level0_object_name 預設值為 Null 的 sysname 。 有效的輸入為預設值、Null 或物件名稱。

{ default |' level1_object_type ' |Null }
這是層級 1 物件的類型。 level1_object_type Varchar(128), 預設值為 Null。
有效輸入包括:

  • AGGREGATE
  • DEFAULT
  • FUNCTION
  • 邏輯檔案名
  • PROCEDURE
  • QUEUE
  • RULE
  • SYNONYM
  • TABLE
  • TYPE
  • VIEW
  • XML SCHEMA COLLECTION
  • NULL

注意

預設會對應至 Null,而 'default' 會對應至物件類型 DEFAULT。

{default |' level1_object_name ' |Null }
這是指定的層級 1 物件類型名稱。 level1_object_name 預設值為 Null 的 sysname 。 有效的輸入為預設值、Null 或物件名稱。

{ default |' level2_object_type ' |Null }
這是層級 2 物件的類型。 level2_object_type 為 Varchar(128), 預設值為 Null。
有效輸入包括:

  • DEFAULT
  • default (對應至 Null)
  • NULL。 level2_object_type 的有效輸入 如下:
  • COLUMN
  • CONSTRAINT
  • EVENT NOTIFICATION
  • INDEX
  • 參數
  • TRIGGER
  • NULL

{ default |' level2_object_name ' |Null }
這是指定的層級 2 物件類型名稱。 level2_object_name是 預設值為 Null 的 sysname 。 有效的輸入為預設值、Null 或物件名稱。

傳回的資料表

這是fn_listextendedproperty所傳回之資料表的格式。

資料行名稱 資料類型
objtype sysname
objname sysname
NAME sysname
value sql_variant

如果傳回的資料表是空的,則物件沒有擴充屬性,或使用者沒有許可權列出物件上的擴充屬性。 傳回資料庫本身的擴充屬性時,objtype 和 objname 資料行會是 Null。

備註

如果property_name 的值 是 Null 或預設值,fn_listextendedproperty會傳回指定物件的所有屬性。

指定物件類型,且對應物件名稱的值為 Null 或預設值時,fn_listextendedproperty會傳回所指定類型之所有物件的所有擴充屬性。

物件會根據層級來區分,層級 0 為最高層級,而層級 2 則為最低層級。 如果指定了較低層級的物件層級 1 或 2,則應該指定非 Null 或預設值的父物件類型和名稱。 否則,函式會傳回空的結果集。

objname 會固定為 Latin1_General_CI_AI。 不過,您可以藉由比較覆寫定序來解決此問題。

SELECT o.[object_id] AS 'table_id', o.[name] 'table_name',  
0 AS 'column_order', NULL AS 'column_name', NULL AS 'column_datatype',  
NULL AS 'column_length', Cast(e.value AS varchar(500)) AS 'column_description'  
FROM AdventureWorks.sys.objects AS o  
LEFT JOIN sys.fn_listextendedproperty(N'MS_Description', N'user',N'HumanResources',N'table', N'Employee', null, default) AS e  
    ON o.name = e.objname COLLATE SQL_Latin1_General_CP1_CI_AS  
WHERE o.name = 'Employee';  

權限

列出物件擴充屬性的許可權會因物件類型而異。

範例

A. 顯示資料庫的擴充屬性

下列範例會顯示資料庫物件本身上設定的所有擴充屬性。

USE AdventureWorks2022;  
GO  
SELECT objtype, objname, name, value  
FROM fn_listextendedproperty(default, default, default, default, default, default, default);  
GO  

以下為結果集。

objtype objname name value

--------- --------- ----------- ----------------------------

NULL NULL MS_Description AdventureWorks2008 Sample OLTP Database

(1 row(s) affected)

B. 在資料表中的所有資料行上顯示擴充屬性

下列範例會列出資料表中資料行的 ScrapReason 擴充屬性。 這包含在架構 Production 中。

USE AdventureWorks2022;  
GO  
SELECT objtype, objname, name, value  
FROM fn_listextendedproperty (NULL, 'schema', 'Production', 'table', 'ScrapReason', 'column', default);  
GO  

以下為結果集。

objtype objname name value

------- ----------- ------------- ------------------------

COLUMN ScrapReasonID MS_Description Primary key for ScrapReason records.

COLUMN Name MS_Description Failure description.

COLUMN ModifiedDate MS_Description Date the record was last updated.

(3 row(s) affected)

C. 在架構中的所有資料表上顯示擴充屬性

下列範例會列出架構中包含的所有資料表擴充 Sales 屬性。

USE AdventureWorks2022;  
GO  
SELECT objtype, objname, name, value  
FROM fn_listextendedproperty (NULL, 'schema', 'Sales', 'table', default, NULL, NULL);  
GO  

另請參閱

sp_addextendedproperty (Transact-SQL)
sp_dropextendedproperty (Transact-SQL)
sp_updateextendedproperty (Transact-SQL)
sys.extended_properties (Transact-SQL)