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 を起動します。左側の[オブジェクト エクスプローラ]のツリービューで、[データベースノード]内にあるデータベースのノードを開きます。[シノニム]ノードがあるのでクリックして選択します。
右クリックします。下図のポップアップメニューが表示されます。メニューの[新しいシノニム]をクリックします。
[新しいシノニム]ダイアログが表示されます。
[シノニム名]にシノニムとして利用する名前を入力します。今回は"ContentsViewLog"とします。入力後[シノニム スキーマ]のテキストボックスの右側の[...]ボタンをクリックします。
[スキーマの検索]ダイアログボックスが表示されます。[選択するオブジェクト名を入力してください]の欄の右側の[参照]ボタンをクリックします。
[オブジェクトの参照]ダイアログボックスが表示されます。
オブジェクトの一覧から[dbo]のオブジェクトの左側のチェックボックスにチェックをします。チェック後[OK]ボタンをクリックします。
選択するオブジェクト名に[dbo]が入力されました。ダイアログの[OK]ボタンをクリックしてダイアログを閉じます。
[シノニム スキーマ]の欄が入力できました。
サーバー名、データベース名、スキーマを設定します。スキーマは[dbo]を設定します。[オブジェクトの種類]コンボボックスを開きます。参照するオブジェクトの種類を選択します。
今回はテーブルを選択します。
[オブジェクト名]のコンボボックスを開きます。テーブルの一覧が表示されます。[ContentsViewLog]テーブルを選択します。
すべての項目が設定できました。ダイアログ右下の[OK]ボタンをクリックします。
シノニムが作成できると、[シノニム]ノードの下に作成されたシノニムの項目が追加されます。
シノニムを利用してSQL文を実行します。データベース名を指定していませんが、他のデータベースにある"ContentsViewLog"テーブルにアクセスできています。
以上でシノニムが作成できました。
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2017-09-04
作成日: 2016-11-07