sys.fn_listextendedproperty (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

データベース オブジェクトの拡張プロパティ値を返します。

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

重要

レベル 0 の型としての USER と TYPE は、今後のバージョンのSQL Serverで削除される予定です。 新しい開発作業では、これらの機能の使用を避け、現在これらの機能を使用しているアプリケーションは修正するようにしてください。 USER の代わりに、レベル 0 の種類として SCHEMA を使用してください。 TYPE については、レベル 0 の種類として SCHEMA、レベル 1 の種類として TYPE を使用してください。

{ 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
  • default (NULL にマップ)
  • NULL。 level2_object_typeの有効な入力は次のとおりです。
  • COLUMN
  • CONSTRAINT
  • EVENT NOTIFICATION
  • INDEX
  • PARAMETER
  • TRIGGER
  • NULL

{ default | 'level2_object_name' |NULL }
指定されたレベル 2 のオブジェクト型の名前です。 level2_object_namesysname で、既定値は NULL です。 有効な入力は、既定値、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 または default 以外の値で指定する必要があります。 それ以外の場合は、空のセットを返します。

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)