俺の開発研究所

Ruby on Rails、Linux、Windowsを中心にIT技術系の備忘録とか。よく忘れるので。

*

SQL Serverで他データベースのテーブルをシノニムで参照(SELECT)

      2014/08/31

SQL Serverで他のデータベースのテーブルを「シノニム」を通して参照(SELECT)する。

シノニム」とは、テーブルやビューなどのオブジェクトの別名のこと。

これを作成する際に、別データベースを指定し、参照することができる。

なお、今回の環境は以下です。

  • Windows Server 2008 R2 Standard
  • SQLServer Standard 2008 R2

スポンサード リンク

参照元データベースにシノニム作成

「SQL Server Management Studio」を開き、ログインする。

左側の「オブジェクトエクスプローラ」⇒参照元データベース⇒「シノニム」を右クリックし、「新しいシノニム」を開く。

左側の「ページの選択」で「全般」を選択し、下記を入力し、シノニムを作成する。

  • シノニム名…任意の名前
  • シノニムスキーマ…「dbo」
  • サーバー名…参照先サーバー名
  • データベース名…参照先データベース名
  • スキーマ…「dbo」
  • オブジェクトの種類…「テーブル」
  • オブジェクト名…参照先テーブル名

参照先データベースにデータベースユーザー作成

左側の「オブジェクトエクスプローラ」⇒参照先データベース⇒「セキュリティ」⇒「ユーザー」を右クリックし、「新しいユーザー」を開く。

左側の「ページの選択」で「全般」を選択し、下記を入力する。

  • ユーザー名…任意の名前
  • ログイン名…参照元データベースのユーザー名
  • 既定のスキーマ…「dbo」

参照先テーブルへ権限割り当て

左側の「ページの選択」で「セキュリティ保護可能なリソース」を選択する。

検索を押下し、「オブジェクトの追加」を開く。

「この種類のすべてのオブジェクト」にチェックを入れ、「オブジェクトの種類を選択」を開き、テーブルにチェックを入れる。

「セキュリティ保護可能なリソース」に一覧が表示されるので、参照先のテーブルを選択し、必要な権限にチェックを入れる。

今回はテーブル参照をしたいので、「参照」と「選択」にチェックを入れた。

なお、「選択」にチェックを入れないとSELECT文で、以下のようなエラーになった。

「SELECT 権限がオブジェクト ‘参照先テーブル名’、データベース ‘参照先データベース名’、スキーマ ‘dbo’ で拒否されました。」

そういうもんなのかな?

まあ、細かいことは気にしない。

特定の列だけなど、より詳細な権限を指定したい場合は「列権限」ボタンを押下し、設定ができる。

 - SQL Server