データベース オブジェクトでの拡張プロパティの使用
拡張プロパティを使用することで、データベース内のオブジェクトのプロパティやデータベース自体のプロパティとして、テキスト (説明用や指示用)、定型入力、および書式の規則を追加できます。たとえば、スキーマ、スキーマのビュー、またはビュー内の列に拡張プロパティを追加できます。拡張プロパティはデータベースに格納されるので、拡張プロパティを読み取るすべてのアプリケーションで、同じ方法でオブジェクトを評価できます。この機能により、システム内のすべてのプログラムがデータを処理する方法の一貫性を保つことができます。
拡張プロパティは、次の場合に使用できます。
テーブル、ビュー、または列のキャプションを指定する場合。これにより、アプリケーションは、そのテーブル、ビュー、または列の情報を表示するユーザー インターフェイスに同じキャプションを使用できます。
列に定型入力を指定する場合。これにより、アプリケーションは、Transact-SQL ステートメントを実行する前にデータを検証できます。たとえば、郵便番号列または電話番号列に必要な書式を、拡張プロパティで指定できます。
列にデータを表示するための書式の規則を指定する場合。
アプリケーションがユーザーに表示できる特定のデータベース オブジェクトの説明を記録する場合。たとえば、この説明を、データ辞書アプリケーションやレポートに使用できます。
列を表示するサイズやウィンドウ位置を指定する場合。
注意 |
---|
オブジェクトに関する機密情報を非表示にする場合は、拡張プロパティを使用しないでください。オブジェクトに対する権限が許可されたユーザーは、そのオブジェクトの拡張プロパティを表示できるようになります。たとえば、テーブルに対する SELECT 権限をユーザーに許可すると、そのユーザーはそのテーブルの拡張プロパティを表示できるようになります。 |
拡張プロパティの定義
ユーザーは、各拡張プロパティの名前と値を定義できます。拡張プロパティの値は、sql_variant 型の値で、最大 7,500 バイトのデータを格納できます。1 つのオブジェクトに、複数の拡張プロパティを追加できます。
拡張プロパティを指定するために、SQL Server データベース内のオブジェクトは、3 つのレベル (0、1、2) に分けられています。レベル 0 は、データベース スコープに含まれる最上位レベルのオブジェクトとして定義されます。レベル 1 のオブジェクトはスキーマ スコープまたはユーザー スコープに含まれ、レベル 2 のオブジェクトはレベル 1 のオブジェクトに含まれます。拡張プロパティは、これらのいずれかのレベルのオブジェクトに定義できます。
あるレベルのオブジェクトを参照する場合は、そのオブジェクトを所有または包含する上位レベルのオブジェクトの名前で修飾する必要があります。たとえば、テーブル列 (レベル 2) に拡張プロパティを追加する場合、その列を含むテーブル名 (レベル 1) とそのテーブルを含むスキーマ (レベル 0) も指定する必要があります。
次の例では、拡張プロパティの 'Minimum inventory quantity.' 値が、Production スキーマに含まれる Product テーブル内の SafetyStockLevel 列に追加されます。
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Minimum inventory quantity.',
@level0type = N'SCHEMA', @level0name = Production,
@level1type = N'TABLE', @level1name = Product,
@level2type = N'COLUMN', @level2name = SafetyStockLevel;
GO
オブジェクトへの拡張プロパティの追加
次の表は、拡張プロパティを追加できるオブジェクトの一覧です。レベル 0、レベル 1、およびレベル 2 で有効な各オブジェクトの種類を示します。また、拡張プロパティを追加、削除、または表示するのに必要な権限も示します。
集計
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
USER の代わりに SCHEMA を使用する必要があります。このトピックの「スキーマとユーザー」を参照してください。 |
1 |
AGGREGATE |
集計 OBJECT の ALTER 権限 |
OBJECT の任意の権限 |
ユーザー定義 CLR 集計関数に適用されます。 |
非対称キー
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
ASYMMETRIC KEY |
CERTIFICATE の ALTER 権限 |
KEY の任意の権限 |
1 |
なし |
|
|
2 |
なし |
|
|
アセンブリ
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
ASSEMBLY |
ASSEMBLY の ALTER 権限 |
ASSEMBLY の任意の権限 |
1 |
なし |
|
|
2 |
なし |
|
|
証明書
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
CERTIFICATE |
CERTIFICATE の ALTER 権限 |
CERTIFICATE の任意の権限 |
1 |
なし |
|
|
2 |
なし |
|
|
コントラクト (Service Broker)
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
CONTRACT |
CONTRACT の ALTER 権限 |
CONTRACT の任意の権限 |
1 |
なし |
|
|
2 |
なし |
|
|
データベース
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
なし |
DATABASE の ALTER 権限 |
DATABASE の CONTROL 権限 または DATABASE の TAKE OWNERSHIP 権限 または DATABASE の VIEW DEFINITION 権限 または SERVER の ALTER ANY DATABASE 権限 または SERVER の CREATE DATABASE 権限 |
プロパティはデータベース自体に適用されます。 |
1 |
なし |
|
|
|
2 |
なし |
|
|
|
例
次の例では、拡張プロパティが AdventureWorks サンプル データベース自体に追加されます。
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'AdventureWorks Sample OLTP Database';
GO
デフォルト
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
|
1 |
DEFAULT |
SCHEMA の ALTER 権限 |
HAS_DBACCESS = 1 |
これは旧バージョンとの互換性のためだけに用意されています。詳細については、「SQL Server 2008 データベース エンジンの非推奨機能」を参照してください。 |
2 |
なし |
|
|
|
イベント通知
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
EVENT NOTIFICATION |
DATABASE の ALTER ANY DATABASE EVENT NOTIFICATION 権限 |
イベント通知の所有者 または データベースの CONTROL、ALTER、TAKE OWNERSHIP、VIEW DEFINITION のいずれかの権限 または ALTER ANY DATABASE EVENT NOTIFICATION 権限 |
親がデータベースである、データベース レベルのイベント通知に適用されます。 拡張プロパティは、サーバー レベルのイベント通知に追加できません。 |
1 |
なし |
|
|
|
2 |
なし |
|
|
|
ファイル グループまたはファイル名
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
FILEGROUP |
DATABASE の ALTER 権限 |
HAS_DBACCESS = 1 |
1 |
LOGICAL FILE NAME |
DATABASE の ALTER 権限 |
HAS_DBACCESS = 1 |
2 |
なし |
|
|
例
次の例では、拡張プロパティが PRIMARY ファイル グループに追加されます。
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Primary filegroup for the AdventureWorks sample database.',
@level0type = N'FILEGROUP', @level0name = [PRIMARY];
GO
次の例では、拡張プロパティが PRIMARY ファイル グループ内の論理ファイル名 AdventureWorks_Data に追加されます。
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Primary data file for the AdventureWorks sample database.',
@level0type = N'FILEGROUP', @level0name = [PRIMARY],
@level1type = N'Logical File Name', @level1name = AdventureWorks_Data;
GO
関数
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
USER の代わりに SCHEMA を使用する必要があります。このトピックの「スキーマとユーザー」を参照してください。 |
1 |
FUNCTION |
関数 OBJECT の ALTER 権限 |
COLUMN の任意の権限 または OBJECT の任意の権限 |
次のユーザー定義関数に適用されます。
レベル 2 の種類が指定されていない場合、プロパティは関数自体に適用されます。 |
2 |
COLUMN |
関数 OBJECT の ALTER 権限 |
COLUMN の任意の権限 または OBJECT の任意の権限 |
|
2 |
CONSTRAINT |
関数 OBJECT の ALTER 権限 |
COLUMN の任意の権限 または OBJECT の任意の権限 |
|
2 |
PARAMETER |
関数 OBJECT の ALTER 権限 |
COLUMN の任意の権限 または OBJECT の任意の権限 |
|
例
次の例では、拡張プロパティが ufnGetStock ユーザー定義関数に追加されます。
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Scalar function returning the quantity of inventory for a specified ProductID.',
@level0type = N'SCHEMA', @level0name = [dbo],
@level1type = N'FUNCTION', @level1name = ufnGetStock;
GO
次の例では、拡張プロパティが、ufnGetStock ユーザー定義関数で定義された @ProductID パラメータに追加されます。
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Input parameter. Enter a valid ProductID.',
@level0type = N'SCHEMA', @level0name = [dbo],
@level1type = N'FUNCTION', @level1name = ufnGetStock,
@level2type = N'PARAMETER', @level2name ='@ProductID';
GO
メッセージ型
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
MESSAGE TYPE |
MESSAGE TYPE の ALTER 権限 |
HAS_DBACCESS = 1 |
1 |
なし |
|
|
2 |
なし |
|
|
パーティション関数
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
PARTITION FUNCTION |
DATABASE の ALTER ANY DATASPACE 権限 |
HAS_DBACCESS = 1 |
1 |
なし |
|
|
2 |
なし |
|
|
パーティション構成
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
PARTITION SCHEME |
DATABASE の ALTER ANY DATASPACE 権限 |
HAS_DBACCESS = 1 |
1 |
なし |
|
|
2 |
なし |
|
|
プラン ガイド
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
PLAN GUIDE |
DATABASE の ALTER ANY DATASPACE 権限 |
SQL または TEMPLATE ガイドの場合は、データベースの VIEW DEFINITION、ALTER、TAKE OWNERSHIP、CONTROL のいずれかの権限、OBJECT ガイドの場合は、オブジェクトの VIEW DEFINITION、ALTER、TAKE OWNERSHIP または CONTROL のいずれかの権限 |
1 |
なし |
|
|
2 |
なし |
|
|
次の例では、拡張プロパティがプラン ガイド TemplateGuide1 に追加されます。
USE AdventureWorks;
GO
EXECUTE sp_addextendedproperty @name=N'PlanGuideGroup', @value = N'MyTest',
@level0type = N'Plan Guide', @level0name = 'TemplateGuide1';
プロシージャ
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
USER の代わりに SCHEMA を使用する必要があります。このトピックの「スキーマとユーザー」を参照してください。 |
1 |
PROCEDURE |
プロシージャ OBJECT の ALTER 権限
注意
拡張ストアド プロシージャに拡張プロパティを追加できるのは、固定サーバー ロール sysadmin のメンバだけです。
|
OBJECT の任意の権限 |
次のユーザー定義ストアド プロシージャに適用されます。
レベル 2 の種類が指定されていない場合、プロパティはプロシージャ自体に適用されます。 |
2 |
PARAMETER |
プロシージャ OBJECT の ALTER 権限 |
OBJECT の任意の権限 |
|
キュー (Service Broker)
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
USER の代わりに SCHEMA を使用する必要があります。このトピックの「スキーマとユーザー」を参照してください。 |
1 |
QUEUE |
キュー OBJECT の ALTER 権限 |
OBJECT の任意の権限 |
|
2 |
EVENT NOTIFICATION |
キュー OBJECT の ALTER 権限 |
イベント通知の所有者 または キューの CONTROL、ALTER、TAKE OWNERSHIP、VIEW DEFINITION のいずれかの権限 または ALTER ANY DATABASE EVENT NOTIFICATION 権限 |
イベント通知には、キューとは異なる所有者が存在する場合があります。 |
リモート サービス バインド (Service Broker)
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
REMOTE SERVICE BINDING |
REMOTE SERVICE BINDING の ALTER 権限 |
REMOTE SERVICE BINDING の任意の権限 |
1 |
なし |
|
|
2 |
なし |
|
|
ルート (Service Broker)
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
ROUTE |
REMOTE SERVICE BINDING の ALTER 権限 |
ROUTE の任意の権限 |
1 |
なし |
|
|
2 |
なし |
|
|
ルール
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
|
1 |
RULE |
SCHEMA の ALTER 権限 |
HAS_DBACCESS = 1 |
これは旧バージョンとの互換性のために用意されています。詳細については、「SQL Server 2008 データベース エンジンの非推奨機能」を参照してください。 |
2 |
なし |
|
|
|
スキーマまたはユーザー
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
SCHEMA の ALTER 権限または USER の ALTER 権限 |
APPLICATION ROLE の任意の権限 または ROLE の任意の権限 または USER の任意の権限 |
レベル 1 の種類が指定されていない場合、プロパティはスキーマ自体またはユーザー自体に適用されます。 USER は次のいずれかです。
拡張プロパティをユーザーに追加する場合は、USER だけを使用する必要があります。
重要
SQL Server の今後のバージョンでは、レベル 1 またはレベル 2 のオブジェクトの種類に対して定義されるレベル 0 の USER オブジェクトが削除されます。新しい開発作業では、この機能を使用しないでください。また、現在この機能を使用しているアプリケーションの変更を検討してください。代わりに、レベル 0 の種類として SCHEMA を使用してください。
|
1 |
各種 |
|
|
|
2 |
各種 |
|
|
|
サービス
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
SERVICE |
SERVICE の ALTER 権限 |
SERVICE の ALTER 権限 または SERVICE の CONTROL 権限 または SERVICE の TAKE OWNERSHIP 権限 または SERVICE の VIEW DEFINITION 権限 |
1 |
なし |
|
|
2 |
なし |
|
|
対称キー
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
---|---|---|---|
0 |
SYMMETRIC KEY |
CERTIFICATE の ALTER 権限 |
KEY の任意の権限 |
1 |
なし |
|
|
2 |
なし |
|
|
シノニム
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
USER の代わりに SCHEMA を使用する必要があります。このトピックの「スキーマとユーザー」を参照してください。 |
1 |
SYNONYM |
SYNONYM の CONTROL 権限 |
OBJECT の任意の権限 |
|
2 |
なし |
|
|
|
テーブル
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
USER の代わりに SCHEMA を使用する必要があります。このトピックの「スキーマとユーザー」を参照してください。 |
1 |
TABLE |
テーブル OBJECT の ALTER 権限 |
COLUMN の任意の権限 または OBJECT の任意の権限 |
ユーザー定義のテーブルに適用されます。レベル 2 の種類が指定されていない場合、プロパティはテーブル自体に適用されます。 |
2 |
COLUMN |
テーブル OBJECT の ALTER 権限 |
COLUMN の任意の権限 または OBJECT の任意の権限 |
|
2 |
CONSTRAINT |
テーブル OBJECT の ALTER 権限 |
OBJECT の ALTER 権限 または OBJECT の CONTROL 権限 または OBJECT の TAKE OWNERSHIP 権限 または OBJECT の VIEW DEFINITION 権限 |
次の制約に適用されます。
|
2 |
INDEX |
テーブル OBJECT の ALTER 権限 |
COLUMN の任意の権限 または OBJECT の任意の権限 |
リレーショナル インデックスと XML インデックスに適用されます。 |
2 |
TRIGGER |
テーブル OBJECT の ALTER 権限 |
OBJECT の ALTER 権限 または OBJECT の CONTROL 権限 または OBJECT の TAKE OWNERSHIP 権限 または OBJECT の VIEW DEFINITION 権限 |
次の DML トリガに適用されます。
DDL トリガには適用されません。 |
例
次の例では、拡張プロパティが Person スキーマ内の Address テーブルに追加されます。
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_Description',
@value = N'Street address information for customers, employees, and vendors.',
@level0type = N'SCHEMA', @level0name = Person,
@level1type = N'TABLE', @level1name = Address;
GO
次の例では、拡張プロパティが Person スキーマ内の Address テーブルの IX_Address_StateProviceID インデックスに追加されます。
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Nonclustered index on StateProvinceID.',
@level0type = N'SCHEMA', @level0name = Person,
@level1type = N'TABLE', @level1name = Address,
@level2type = N'INDEX', @level2name = IX_Address_StateProvinceID;
GO
トリガ
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
TRIGGER |
DATABASE の ALTER ANY TRIGGER 権限 |
DATABASE の ALTER ANY TRIGGER 権限 |
DDL トリガだけに適用されます。 |
1 |
なし |
|
|
|
2 |
なし |
|
|
|
型
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
TYPE |
TYPE の CONTROL 権限 |
TYPE の任意の権限 |
以前のバージョンの SQL Server で作成されたユーザー定義型に適用されます。 これは旧バージョンとの互換性のために用意されています。詳細については、「SQL Server 2008 データベース エンジンの非推奨機能」を参照してください。 |
1 |
なし |
|
|
|
2 |
なし |
|
|
|
型
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
USER の代わりに SCHEMA を使用する必要があります。このトピックの「スキーマとユーザー」を参照してください。 |
1 |
TYPE |
TYPE の CONTROL 権限 |
TYPE の任意の権限 |
|
2 |
なし |
|
|
|
ビュー
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
USER の代わりに SCHEMA を使用する必要があります。このトピックの「スキーマとユーザー」を参照してください。 |
1 |
VIEW |
ビュー OBJECT の ALTER 権限 |
COLUMN の任意の権限 または OBJECT の任意の権限 |
ユーザー定義のビューに適用されます。レベル 2 の種類が指定されていない場合、プロパティはビュー自体に適用されます。 |
2 |
COLUMN |
ビュー OBJECT の ALTER 権限 |
COLUMN の任意の権限 または OBJECT の任意の権限 |
|
2 |
INDEX |
ビュー OBJECT の ALTER 権限 |
COLUMN の任意の権限 または OBJECT の任意の権限 |
リレーショナル インデックスと XML インデックスに適用されます。 |
2 |
TRIGGER |
ビュー OBJECT の ALTER 権限 |
DATABASE の ALTER ANY TRIGGER 権限 または OBJECT の ALTER 権限 または OBJECT の CONTROL 権限 または OBJECT の TAKE OWNERSHIP 権限 または OBJECT の VIEW DEFINITION 権限 |
次の DML トリガに適用されます。
DDL トリガには適用されません。 |
XML スキーマ コレクション
レベル |
レベルの種類 |
拡張プロパティの追加または削除に必要な権限 |
拡張プロパティの表示に必要な権限 |
コメント |
---|---|---|---|---|
0 |
SCHEMA または USER |
|
|
USER の代わりに SCHEMA を使用する必要があります。このトピックの「スキーマとユーザー」を参照してください。 |
1 |
XML SCHEMA COLLECTION |
XML SCHEMA COLLECTION の ALTER 権限 |
XML SCHEMA COLLECTION の ALTER 権限 または XML SCHEMA COLLECTION の CONTROL 権限 または XML SCHEMA COLLECTION の REFERENCES 権限 または XML SCHEMA COLLECTION の TAKE OWNERSHIP 権限 または XML SCHEMA COLLECTION の VIEW DEFINITION 権限 |
拡張プロパティは、XML 名前空間には追加できません。 |
2 |
なし |
|
|
|
拡張プロパティをサポートしないオブジェクト
拡張プロパティは、次のオブジェクトでは定義できません。
上記の表で示されていないデータベース スコープ オブジェクト。これには、フルテキスト オブジェクトがあります。
データベース スコープ外のオブジェクト (HTTP エンドポイントなど)。
名前のないオブジェクト (パーティション関数のパラメータなど)。
証明書、対称キー、非対称キー、および資格情報。
システム定義オブジェクト (システム テーブル、カタログ ビュー、システム ストアド プロシージャなど)。
スキーマとユーザー
以前のバージョンの SQL Server では、ユーザーがテーブル、ビュー、トリガなどのデータベース オブジェクトを所有していました。そのため、このようなオブジェクトの 1 つに拡張プロパティを追加したり、ユーザー名をレベル 0 の種類として指定することができました。データベース オブジェクトは、スキーマを所有するユーザーとは無関係のスキーマに含まれるようになりました。
拡張プロパティをデータベース オブジェクトに適用する際にレベル 0 の種類として USER を指定すると、名前解決があいまいになる場合があります。たとえば、ユーザー Mary が 2 つのスキーマ (Mary と MySchema) を所有し、これらのスキーマの両方に MyTable という名前のテーブルがある場合を考えます。Mary が拡張プロパティをテーブル MyTable に追加し、@level0type = N'USER'、@level0name = Mary と指定した場合、拡張プロパティの適用先がどちらのテーブルであるかが明確ではなくなります。旧バージョンとの互換性を維持するために、SQL Server では Mary という名前のスキーマに含まれているテーブルにプロパティが適用されます。ユーザーとスキーマの詳細については、「ユーザーとスキーマの分離」を参照してください。
定型入力と CHECK 制約の使用
CHECK 制約、および定型入力を提供する拡張プロパティの両方を使用して、テーブル列やビュー列に必要なデータのパターンを指定できます。次のいずれかの場合を除いて、大半のサイトではどちらか一方を選択します。
このテーブルを処理するすべてのプログラムが定型入力名プロパティを使用するように変更できるまで、中間手段として CHECK 制約が使われる場合。
このサイトで、拡張プロパティを読み取らないアドホック ツールを使用してデータを更新できるユーザーをサポートする場合。
定型入力が CHECK 制約より優れている点には、そのロジックをアプリケーションから適用できることが挙げられます。このようなアプリケーションでは、ユーザーが不適切な形式のデータを指定した場合により詳しいエラーを生成できます。定型入力の欠点としては、そのプロパティを取得するために fn_listextendedproperty または sys.extended_properties を毎回呼び出す必要があること、および定型入力を設定するロジックをすべてのプログラムに追加する必要があることが挙げられます。
拡張プロパティのレプリケーション
拡張プロパティは、パブリッシャおよびサブスクライバ間の初期同期中のみレプリケートされます。初期同期の後に拡張プロパティを追加または変更した場合、変更内容はレプリケートされません。データベース オブジェクトのレプリケーションの詳細については、「データとデータベース オブジェクトのパブリッシュ」を参照してください。
アプリケーション内での拡張プロパティの使用
拡張プロパティで指定するのは、データを格納する名前付きの位置だけです。すべてのアプリケーションで、プロパティにクエリを実行し、適切な操作を行うコードが必要です。たとえば、キャプションのプロパティを列に追加しても、アプリケーションで表示できるキャプションは作成されません。各アプリケーションに、そのキャプションを正しく読み取って表示するコードが必要です。
拡張プロパティを追加するには
拡張プロパティを更新するには
拡張プロパティを削除するには
拡張プロパティを表示するには