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_namesysname。 有效输入包括默认值 NULL 或属性名。

{ default |“level0_object_type” |NULL}
用户或用户定义类型。 level0_object_typevarchar (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 替代 USER 作为级别 0 类型。 对于 TYPE,请使用 SCHEMA 作为级别 0 类型,使用 TYPE 作为级别 1 类型。

{ default |“level0_object_name” |NULL }
所指定的级别 0 对象类型的名称。 level0_object_namesysname ,默认值为 NULL。 有效输入包括默认值 NULL 或对象名称。

{ default |“level1_object_type” |NULL }
级别 1 对象的类型。 level1_object_typevarchar (128) ,默认值为 NULL。
有效输入为:

  • AGGREGATE
  • DEFAULT
  • FUNCTION
  • LOGICAL FILE NAME
  • PROCEDURE
  • QUEUE
  • RULE
  • SYNONYM
  • TABLE
  • TYPE
  • VIEW
  • XML SCHEMA COLLECTION
  • Null

注意

默认值映射到 NULL,而“default”映射到对象类型 DEFAULT。

{default |“level1_object_name” |NULL }
所指定的级别 1 对象类型的名称。 level1_object_namesysname ,默认值为 NULL。 有效输入包括默认值 NULL 或对象名称。

{ default |“level2_object_type” |NULL }
级别 2 对象的类型。 level2_object_typevarchar (128) ,默认值为 NULL。
有效输入为:

  • DEFAULT
  • 默认 (映射到 NULL)
  • NULL。 level2_object_type的有效输入为:
  • COLUMN
  • CONSTRAINT
  • EVENT NOTIFICATION
  • INDEX
  • 参数
  • TRIGGER
  • Null

{ default |“level2_object_name” |NULL }
所指定的级别 2 对象类型的名称。 level2_object_namesysname ,默认值为 NULL。 有效输入包括默认值 NULL 或对象名称。

返回的表

下面是 fn_listextendedproperty 返回的表的格式。

列名称 数据类型
objtype sysname
objname sysname
name sysname
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)