シノニムの使用 (データベース エンジン)

いくつかの SQL ステートメントや式のコンテキストでは、参照先のベース オブジェクトの代わりにシノニムを使用できます。次の表に、これに該当するステートメントや式のコンテキストを示します。

SELECT

INSERT

UPDATE

DELETE

EXECUTE

副選択式

上記のコンテキストでシノニムを扱っているときは、ベース オブジェクトが影響を受けます。たとえば、シノニムが参照するベース オブジェクトがテーブルの場合に、シノニムに行を挿入すると、実際に参照先のテーブルに行が挿入されます。

注意

リンク サーバー上のシノニムを参照することはできません。

OBJECT_ID 関数のパラメーターとしてシノニムを使用できます。ただし、この関数はベース オブジェクトではなく、シノニムのオブジェクト ID を返します。

DDL ステートメントでシノニムを参照することはできません。たとえば、dbo.MyProduct という名前のシノニムを参照する次のステートメントでは、エラーが生成されます。

ALTER TABLE dbo.MyProduct
   ADD NewFlag int null;
EXEC ('ALTER TABLE dbo.MyProduct
   ADD NewFlag int null');

次の権限ステートメントは、シノニムのみに関連付けられ、ベース オブジェクトには影響しません。

GRANT

DENY

REVOKE

 

シノニムはスキーマ バインド オブジェクトではないので、次のスキーマ バインド式コンテキストからは参照できません。

CHECK 制約

計算列

既定式

ルール式

スキーマ バインド ビュー

スキーマ バインド関数

スキーマ バインド関数の詳細については、「ユーザー定義関数の作成 (データベース エンジン)」を参照してください。

次の例では、この後の例で使用するシノニムを作成しています。

USE tempdb;
GO
CREATE SYNONYM MyAddressType
FOR AdventureWorks2008R2.Person.AddressType;
GO

次の例では、MyAddressType シノニムの参照先のベース テーブルに行を挿入しています。

USE tempdb;
GO
INSERT INTO MyAddressType (Name)
VALUES ('Test');
GO

次の例では、動的 SQL でのシノニムの参照方法を示しています。

USE tempdb;
GO
EXECUTE ('SELECT Name FROM MyAddressType');
GO