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