次の方法で共有


sys.fn_listextendedproperty (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure 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 の型としてのユーザーと 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_type は、既定値が NULL varchar(128) です。
有効な入力は次のとおりです。

  • AGGREGATE
  • DEFAULT
  • FUNCTION
  • 論理ファイル名
  • PROCEDURE
  • QUEUE
  • RULE
  • SYNONYM
  • TABLE
  • TYPE
  • VIEW
  • XML SCHEMA COLLECTION
  • NULL

Note

既定値は NULL にマップされ、'default' はオブジェクト型 DEFAULT にマップされます。

{default | 'level1_object_name' |NULL }
指定されたレベル 1 のオブジェクトの種類の名前です。 level1_object_namesysname 既定値は NULL です。 有効な入力は、既定値、NULL、またはオブジェクト名です。

{ default | 'level2_object_type' |NULL }
レベル 2 のオブジェクトの種類です。 level2_object_type は、既定値が NULL の varchar(128) です。
有効な入力は次のとおりです。

  • 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
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)