シノニムについて

シノニムは、次の目的で機能するデータベース オブジェクトです。

  • ベース オブジェクトと呼ばれる別のデータベース オブジェクトの代替名を提供します。ベース オブジェクトは、ローカル サーバーまたはリモート サーバーに配置できます。

  • ベース オブジェクトの名前や場所に加えられた変更からクライアント アプリケーションを保護する抽象層を提供します。

たとえば、Server1 という名前のサーバーに AdventureWorks2008R2 サンプル データベースの Employee テーブルがあるとします。クライアント アプリケーションで、このテーブルを別のサーバー (Server2) から参照するには、Server1.AdventureWorks.HumanResources.Employee という 4 部構成の名前を使用する必要があります。また、テーブルの場所を別のサーバーなどに変更する場合は、その変更内容を反映してクライアント アプリケーションを変更する必要があります。

このような問題の両方に対処するには、Server1 の Employee テーブルに対して、Server2 に EmpTable というシノニムを作成できます。これで、クライアント アプリケーションから Employee テーブルを参照するときに、EmpTable という 1 部構成の名前を使用するだけで済みます。また、Employee テーブルの場所が変更された場合は、Employee テーブルの新しい場所を指すように、シノニムである EmpTable を変更する必要があります。ALTER SYNONYM というステートメントは存在しないので、EmpTable というシノニムをいったん削除してから、Employee の新しい場所を指す同じ名前のシノニムを作成する必要があります。

シノニムはスキーマに属しています。したがって、スキーマ内の他のオブジェクトと同様に、シノニムの名前は一意にする必要があります。シノニムは、次のデータベース オブジェクトに対して作成できます。

アセンブリ (CLR) ストアド プロシージャ

アセンブリ (CLR) テーブル値関数

アセンブリ (CLR) スカラー関数

アセンブリ (CLR) 集計関数

レプリケーション フィルター プロシージャ

拡張ストアド プロシージャ

SQL スカラー関数

SQL テーブル値関数

SQL インライン テーブル値関数

SQL ストアド プロシージャ

ビュー

テーブル1 (ユーザー定義)

1 ローカルおよびグローバルの一時テーブルを含みます。

注意

関数のベース オブジェクトでは、4 部構成の名前がサポートされません。

あるシノニムを別のシノニムのベース オブジェクトにすることはできません。また、シノニムからユーザー定義集計関数を参照することもできません。

シノニムとベース オブジェクトとのバインドは、名前だけで行われます。ベース オブジェクトの存在、種類、および権限のチェックは、すべて実行時まで行われません。このため、ベース オブジェクトの変更や削除を行うことも、または削除してから元のベース オブジェクトと同じ名前の別のオブジェクトに置換することもできます。たとえば、Adventure Works の Person.Person テーブルを参照する MyContacts というシノニムがあるとします。Person テーブルを削除し、Person.Person というビューに置き換えると、MyContacts は Person.Person ビューを参照するようになります。

シノニムへの参照は、スキーマにはバインドされていません。したがって、シノニムはいつでも削除できます。ただし、シノニムを削除することにより、削除されたシノニムへの参照が未解決の状態になる可能性があります。このような参照は、実行時まで見つかりません。

シノニムとスキーマ

所有者が自分ではない既定のスキーマのシノニムを作成する場合は、自分が所有しているスキーマ名でシノニム名を修飾する必要があります。たとえば、x というスキーマを所有していて、既定のスキーマが y だとします。この状況で CREATE SYNONYM ステートメントを使用する場合は、1 部構成の名前を使用してシノニムに名前を付けるのではなく、スキーマ x をシノニム名のプレフィックスにする必要があります。シノニムの作成方法の詳細については、「CREATE SYNONYM (Transact-SQL)」を参照してください。

シノニムに対する権限の許可

シノニムに対する権限を許可できるのは、シノニムの所有者、db_owner、または db_ddladmin のみです。

次に示すシノニムに対する権限は、すべてまたはいくつかを許可 (GRANT)、拒否 (DENY)、または取り消す (REVOKE) ことができます。

CONTROL

DELETE

EXECUTE

INSERT

SELECT

TAKE OWNERSHIP

UPDATE

VIEW DEFINITION