分享方式:


sys.fn_listextendedproperty (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫 Azure 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)