新しいシノニムを作成します。
適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)、Windows Azure SQL データベース (初回のリリースから現在のバージョンまで) |
構文
-- SQL Server Syntax
CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>
<object> :: =
{
[ server_name.[ database_name ] . [ schema_name_2 ]. object_name
| database_name . [ schema_name_2 ].| schema_name_2. ] object_name
}
-- Windows Azure SQL Database Syntax
CREATE SYNONYM [ schema_name_1. ] synonym_name FOR < object >
< object > :: =
{
[database_name. [ schema_name_2 ].| schema_name_2. ] object_name
}
引数
schema_name_1
シノニムを作成するスキーマを指定します。 schema を指定しない場合、SQL Server では現在のユーザーの既定のスキーマが使用されます。synonym_name
新しいシノニムの名前です。server_name
適用対象: SQL Server 2008 から SQL Server 2014。
ベース オブジェクトがあるサーバーの名前です。
database_name
ベース オブジェクトがあるデータベースの名前です。 database_name を指定しない場合、現在のデータベース名が使用されます。schema_name_2
ベース オブジェクトのスキーマの名前です。 schema_name を指定しない場合、現在のユーザーの既定のスキーマが使用されます。object_name
シノニムが参照するベース オブジェクトの名前です。Windows Azure SQL データベースでは、database_name が現在のデータベースの場合、または database_name が tempdb で、object_name が # で始まる場合に、3 つの要素で構成された名前形式 database_name.[schema_name].object_name をサポートします。
説明
シノニムの作成時にベース オブジェクトが存在している必要はありません。 SQL Server は、ベース オブジェクトが存在することを実行時に確認します。
次の種類のオブジェクトに対してシノニムを作成することができます。
アセンブリ (CLR) ストアド プロシージャ |
アセンブリ (CLR) テーブル値関数 |
アセンブリ (CLR) スカラー関数 |
アセンブリ集計 (CLR) 集計関数 |
レプリケーション フィルター プロシージャ |
拡張ストアド プロシージャ |
SQL スカラー関数 |
SQL テーブル値関数 |
SQL インラインテーブル値関数 |
SQL ストアド プロシージャ |
ビュー |
テーブル1 (ユーザー定義) |
1 ローカル一時テーブルとグローバル一時テーブルが含まれます。
4 部構成の関数ベース オブジェクト名はサポートされません。
シノニムは、動的な SQL で作成、削除、および参照できます。
権限
ユーザーが特定のスキーマ内にシノニムを作成するには、CREATE SYNONYM 権限が必要であり、さらにスキーマを所有しているか ALTER SCHEMA 権限が与えられている必要があります。
CREATE SYNONYM 権限は、譲与可能な権限です。
注意
ベース オブジェクトに対する権限のチェックはすべて実行時まで延期されるため、ベース オブジェクトに対する権限を持っていなくても、CREATE SYNONYM ステートメントは正常にコンパイルされます。
使用例
A. ローカル オブジェクトに対してシノニムを作成する
次の例では、まず AdventureWorks2012 データベース中のベース オブジェクト Product に対してシノニムを作成し、次にシノニムに対してクエリを実行します。
USE tempdb;
GO
-- Create a synonym for the Product table in AdventureWorks2012.
CREATE SYNONYM MyProduct
FOR AdventureWorks2012.Production.Product;
GO
-- Query the Product table by using the synonym.
USE tempdb;
GO
SELECT ProductID, Name
FROM MyProduct
WHERE ProductID < 5;
GO
以下に結果セットを示します。
-----------------------
ProductID Name
----------- --------------------------
1 Adjustable Race
2 Bearing Ball
3 BB Ball Bearing
4 Headset Ball Bearings
(4 row(s) affected)
B. リモート オブジェクトに対してシノニムを作成する
次の例では、ベース オブジェクト Contact は、Server_Remote というリモート サーバー上にあります。
適用対象: SQL Server 2008 から SQL Server 2014。 |
EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2012.HumanResources.Employee;
GO
C. ユーザー定義関数に対してシノニムを作成する
次の例では、注文量をちょうど 1 ダース単位に増やす dbo.OrderDozen という名前の関数を作成します。 次に、シノニム dbo.CorrectOrder を dbo.OrderDozen 関数に対して作成します。
-- Creating the dbo.OrderDozen function
CREATE FUNCTION dbo.OrderDozen (@OrderAmt int)
RETURNS int
WITH EXECUTE AS CALLER
AS
BEGIN
IF @OrderAmt % 12 <> 0
BEGIN
SET @OrderAmt += 12 - (@OrderAmt % 12)
END
RETURN(@OrderAmt);
END;
GO
-- Using the dbo.OrderDozen function
DECLARE @Amt int;
SET @Amt = 15;
SELECT @Amt AS OriginalOrder, dbo.OrderDozen(@Amt) AS ModifiedOrder;
-- Create a synonym dbo.CorrectOrder for the dbo.OrderDozen function.
CREATE SYNONYM dbo.CorrectOrder
FOR dbo.OrderDozen;
GO
-- Using the dbo.CorrectOrder synonym.
DECLARE @Amt int;
SET @Amt = 15;
SELECT @Amt AS OriginalOrder, dbo.CorrectOrder(@Amt) AS ModifiedOrder;