シノニムを作成する

SQL Serverでシノニムを作成する手順を紹介します。

概要

SQL Serverの「シノニム」は他のオブジェクトを別名で参照できる機能です。シノニムを用いることで、他のデータベースのテーブル、ビュー、ストアドプロシージャーを別名で参照できます。

別名で参照できるメリット

別名で他のデータベースのテーブルや、ビューを参照できることにより、SQLの文中にデータベース名を記述する必要がなくなります。SQL文の実行側のアプリに手を入れることなく、データベース側の設定で参照先のデータベースの変更ができます。

iPentecItem と iPentecProducts データベースがあります。2つのデータベースを参照する以下のSQL文があります。

select * from [iPentecItem].[dbo].item 
inner join [iPentecProducts].[dbo].products
on [iPentecItem].[dbo].item.id = [iPentecProducts].[dbo].products.itemid

状況の変化により、[iPentecProducts].[dbo].products テーブルとではなく、[NiwatoriProducts].[dbo].products テーブルとjoinする必要が出ました。通常であれば、

select * from [iPentecItem].[dbo].item 
inner join [NiwatoriProducts].[dbo].products
on [iPentecItem].[dbo].item.id = [NiwatoriProducts].[dbo].products.itemid

とSQL文を書き換えるのですが、いちいちアプリケーション側のSQL文を書き換えるのは面倒です。 そこで

[iPentecProducts].[dbo].products = TARGETTable

とシノニムを作成することで

select * from [iPentecItem].[dbo].item 
inner join [iPentecItem].[dbo].TARGETTable 
on [iPentecItem].[dbo].item.id = [iPentecItem].[dbo].TARGETTable.itemid

と記述できます。他のデータベースへの参照がなくなるため、

select * from item inner join TARGETTable on item.id = TARGETTable.itemid

とシンプルにSQLを記述できます。、[NiwatoriProducts].[dbo].products テーブルとjoinする必要が出た場合は、シノニムの定義を

[NiwatoriProducts].[dbo].products = TARGETTable

とすることで、SQL文に変更を加えず、結合するデータベースを変更できます。

シノニムの作成手順

SQL Server Management Studio を利用して作成する

SQL Server Management Studio を起動します。左側の[オブジェクト エクスプローラ]のツリービューで、[データベースノード]内にあるデータベースのノードを開きます。[シノニム]ノードがあるのでクリックして選択します。
シノニムを作成する:画像1

右クリックします。下図のポップアップメニューが表示されます。メニューの[新しいシノニム]をクリックします。
シノニムを作成する:画像2

[新しいシノニム]ダイアログが表示されます。
シノニムを作成する:画像3

[シノニム名]にシノニムとして利用する名前を入力します。今回は"ContentsViewLog"とします。入力後[シノニム スキーマ]のテキストボックスの右側の[...]ボタンをクリックします。
シノニムを作成する:画像4

[スキーマの検索]ダイアログボックスが表示されます。[選択するオブジェクト名を入力してください]の欄の右側の[参照]ボタンをクリックします。
シノニムを作成する:画像5

[オブジェクトの参照]ダイアログボックスが表示されます。
シノニムを作成する:画像6

オブジェクトの一覧から[dbo]のオブジェクトの左側のチェックボックスにチェックをします。チェック後[OK]ボタンをクリックします。
シノニムを作成する:画像7

選択するオブジェクト名に[dbo]が入力されました。ダイアログの[OK]ボタンをクリックしてダイアログを閉じます。
シノニムを作成する:画像8

[シノニム スキーマ]の欄が入力できました。
シノニムを作成する:画像9

サーバー名、データベース名、スキーマを設定します。スキーマは[dbo]を設定します。[オブジェクトの種類]コンボボックスを開きます。参照するオブジェクトの種類を選択します。
シノニムを作成する:画像10

今回はテーブルを選択します。
シノニムを作成する:画像11
シノニムを作成する:画像12

[オブジェクト名]のコンボボックスを開きます。テーブルの一覧が表示されます。[ContentsViewLog]テーブルを選択します。
シノニムを作成する:画像13

すべての項目が設定できました。ダイアログ右下の[OK]ボタンをクリックします。
シノニムを作成する:画像14

シノニムが作成できると、[シノニム]ノードの下に作成されたシノニムの項目が追加されます。
シノニムを作成する:画像15

シノニムを利用してSQL文を実行します。データベース名を指定していませんが、他のデータベースにある"ContentsViewLog"テーブルにアクセスできています。
シノニムを作成する:画像16

以上でシノニムが作成できました。

AuthorPortraitAlt
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
作成日: 2016-11-07
Copyright © 1995–2025 iPentec all rights reserverd.