次の方法で共有


データベース オブジェクトでの拡張プロパティの使用

拡張プロパティを使用することで、データベース内のオブジェクトのプロパティやデータベース自体のプロパティとして、テキスト (説明用や指示用)、定型入力、および書式の規則を追加できます。たとえば、スキーマ、スキーマのビュー、またはビュー内の列に拡張プロパティを追加できます。拡張プロパティはデータベースに格納されるので、拡張プロパティを読み取るすべてのアプリケーションで、同じ方法でオブジェクトを評価できます。この機能により、システム内のすべてのプログラムがデータを処理する方法の一貫性を保つことができます。

拡張プロパティは、次の場合に使用できます。

  • テーブル、ビュー、または列のキャプションを指定する場合。これにより、アプリケーションは、そのテーブル、ビュー、または列の情報を表示するユーザー インターフェイスに同じキャプションを使用できます。

  • 列に定型入力を指定する場合。これにより、アプリケーションは、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 AdventureWorks2008R2;
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

なし

 

 

 

次の例では、拡張プロパティが AdventureWorks2008R2 サンプル データベース自体に追加されます。

USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'AdventureWorks2008R2 Sample OLTP Database';
GO

デフォルト

レベル

レベルの種類

拡張プロパティの追加または削除に必要な権限

拡張プロパティの表示に必要な権限

コメント

0

SCHEMA または USER

 

 

 

1

DEFAULT

SCHEMA の ALTER 権限

HAS_DBACCESS = 1

これは旧バージョンとの互換性のためだけに用意されています。詳細については、「SQL Server 2008 R2 データベース エンジンの非推奨機能」を参照してください。

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 AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Primary filegroup for the AdventureWorks2008R2 sample database.', 
@level0type = N'FILEGROUP', @level0name = [PRIMARY];
GO

次の例では、拡張プロパティが PRIMARY ファイル グループ内の論理ファイル名 AdventureWorks2008R2_Data に追加されます。

USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Primary data file for the AdventureWorks2008R2 sample database.', 
@level0type = N'FILEGROUP', @level0name = [PRIMARY],
@level1type = N'Logical File Name', @level1name = AdventureWorks2008R2_Data;
GO

関数

レベル

レベルの種類

拡張プロパティの追加または削除に必要な権限

拡張プロパティの表示に必要な権限

コメント

0

SCHEMA または USER

 

 

USER の代わりに SCHEMA を使用する必要があります。このトピックの「スキーマとユーザー」を参照してください。

1

FUNCTION

関数 OBJECT の ALTER 権限

COLUMN の任意の権限

または

OBJECT の任意の権限

次のユーザー定義関数に適用されます。

  • CLR スカラー関数

  • CLR テーブル値関数

  • Transact-SQL スカラー

  • Transact-SQL インライン テーブル値

  • Transact-SQL テーブル値

レベル 2 の種類が指定されていない場合、プロパティは関数自体に適用されます。

2

COLUMN

関数 OBJECT の ALTER 権限

COLUMN の任意の権限

または

OBJECT の任意の権限

 

2

CONSTRAINT

関数 OBJECT の ALTER 権限

COLUMN の任意の権限

または

OBJECT の任意の権限

 

2

PARAMETER

関数 OBJECT の ALTER 権限

COLUMN の任意の権限

または

OBJECT の任意の権限

 

次の例では、拡張プロパティが ufnGetStock ユーザー定義関数に追加されます。

USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
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 AdventureWorks2008R2;
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 の任意の権限

次のユーザー定義ストアド プロシージャに適用されます。

  • CLR

  • Transact-SQL

  • レプリケーション フィルター

レベル 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 R2 データベース エンジンの非推奨機能」を参照してください。

2

なし

 

 

 

スキーマまたはユーザー

レベル

レベルの種類

拡張プロパティの追加または削除に必要な権限

拡張プロパティの表示に必要な権限

コメント

0

SCHEMA または USER

SCHEMA の ALTER 権限または USER の ALTER 権限

APPLICATION ROLE の任意の権限

または

ROLE の任意の権限

または

USER の任意の権限

レベル 1 の種類が指定されていない場合、プロパティはスキーマ自体またはユーザー自体に適用されます。

USER は次のいずれかです。

  • アプリケーション ロール

  • データベース ロール

  • SQL Server ユーザー

  • Windows グループ

  • Windows ユーザー

拡張プロパティをユーザーに追加する場合は、USER だけを使用する必要があります。

重要な注意事項重要
SQL Server の今後のバージョンでは、レベル 1 またはレベル 2 のオブジェクトの種類に対して定義されるレベル 0 の USER オブジェクトが削除されます。新しい開発作業では、この機能を使用しないでください。また、現在この機能を使用しているアプリケーションの変更を検討してください。代わりに、レベル 0 の種類として SCHEMA を使用してください。このトピックの「スキーマとユーザー」を参照してください。

1

変動

 

 

 

2

変動

 

 

 

次の例では、拡張プロパティを HumanResources スキーマに追加します。

USE AdventureWorks2008R2;
GO
EXECUTE sys.sp_addextendedproperty 
@name = N'MS_Description',
@value = N'Contains objects related to employees and departments.',
@level0type = N'SCHEMA', 
@level0name = HumanResources;

次の例では、アプリケーション ロールを作成し、拡張プロパティをロールに追加します。

USE AdventureWorks2008R2;
GO
CREATE APPLICATION ROLE Buyers
WITH Password = '987G^bv876sPY)Y5m23';
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_Description', 
@value = N'Application Role for the Purchasing Department.',
@level0type = N'USER',
@level0name = N'Buyers';

サービス

レベル

レベルの種類

拡張プロパティの追加または削除に必要な権限

拡張プロパティの表示に必要な権限

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 権限

次の制約に適用されます。

  • CHECK

  • DEFAULT

  • FOREIGN KEY

  • PRIMARY KEY

  • UNIQUE

2

INDEX

テーブル OBJECT の ALTER 権限

COLUMN の任意の権限

または

OBJECT の任意の権限

リレーショナル インデックスと XML インデックスに適用されます。

2

TRIGGER

テーブル OBJECT の ALTER 権限

OBJECT の ALTER 権限

または

OBJECT の CONTROL 権限

または

OBJECT の TAKE OWNERSHIP 権限

または

OBJECT の VIEW DEFINITION 権限

次の DML トリガーに適用されます。

  • CLR

  • Transact-SQL

DDL トリガーには適用されません。

次の例では、拡張プロパティが Person スキーマ内の Address テーブルに追加されます。

USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
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 R2 データベース エンジンの非推奨機能」を参照してください。

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 トリガーに適用されます。

  • CLR

  • Transact-SQL

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 を毎回呼び出す必要があること、および定型入力を設定するロジックをすべてのプログラムに追加する必要があることが挙げられます。

拡張プロパティのレプリケーション

拡張プロパティは、パブリッシャーおよびサブスクライバー間の初期同期中のみレプリケートされます。初期同期の後に拡張プロパティを追加または変更した場合、変更内容はレプリケートされません。データベース オブジェクトのレプリケーションの詳細については、「データとデータベース オブジェクトのパブリッシュ」を参照してください。

アプリケーション内での拡張プロパティの使用

拡張プロパティで指定するのは、データを格納する名前付きの位置だけです。すべてのアプリケーションで、プロパティにクエリを実行し、適切な操作を行うコードが必要です。たとえば、キャプションのプロパティを列に追加しても、アプリケーションで表示できるキャプションは作成されません。各アプリケーションに、そのキャプションを正しく読み取って表示するコードが必要です。

拡張プロパティを追加するには

拡張プロパティを更新するには

拡張プロパティを削除するには

拡張プロパティを表示するには