SQL Server 2005からOracleのテーブルを参照
SQL Serverにリンクサーバーを設定することで,SQL ServerからOralceにアクセスできるようになります。
サーバーにOracleのクライアントをインストールする
SQL Serverが稼働しているサーバーにOracleのクライアントをインストールします。インストール後SQLサーバーを再起動します。
リンクサーバーの作成
- SQL Server上にリンクテーブルを作成します。SQL Server Management Studio(以下SSMS)を開きます。
- サーバーオブジェクトのリンクサーバーを右クリックして,コンテキストメニューの新しいリンクサーバーを実行します。
全般ページは次のように設定します。
リンクサーバー
SQL Server側から指定する際の別名です。
サーバーの種類
その他のデータソースを指定します。
プロバイダ
Microsoft OLE DB Provider for Oracleを指定します。オラクルが提供するOracle Provider for OLE DBを使うとうまく動作しないみたいです。
次にセキュリティページ
「このセキュリティコンテキストを使用する」を選択して,リモートログインとパスワードを入力します。OKボタンをクリックするとリンクサーバーが作成されます。
リンクサーバーのテーブルを見る
リンクサーバーのテーブルをSELECT文で指定する時には,テーブル名を
<リンクサーバー名>.<カタログ>.<スキーマ>.<オブジェクト名>
のように指定しなければなりません。カタログは指定する必要がないので,次のようになります。
TEST..SCHEMA_A.TABLE
上記は,TESTというリンクサーバーのSCHEMA_AスキーマにあるTABLEテーブルを指定する構文です。この方法で次のようにSELECT文を記述します。
SELECT
FIELD1,
FIELD2,
FIELD3
FROM
TEST..SCHEMA_A.TABLE
注意すべき点は,オブジェクトにシノニムを指定しても取れないことです。本来はデータを取ってこられるはずですが,リンクテーブルからの場合は,本来のテーブル名から取ってくる必要があるようです。オブジェクトにビューを指定することも可能ですが,処理速度が遅いように思います。
シノニムの作成
TEST..SCHEMA_A.TABLE という表記方法はとても長ったらしいと感じます。そこで,SQL Server上でシノニムを作成することができます。
CREATE SYNONYM ORA_TABLE FOR TEST..SCHEMA_A.TABLE
とすると,それ以降そのデータベースではORA_TABLEという名前でリンクテーブルを利用できます。
シノニムを作成するともう一つ良いことがあります。それはA5:SQLにて入力補完機能を利用できるようになることです。リンクテーブルは入力補完の対象ではありませんが,シノニムは対象となりますので,A5:SQLでの開発がとてもやりやすくなります。A5:SQLのVersion 2.3以降のクエリデザイナでも利用できます。
AccessのADPプロジェクトで参照する
リンクしたOracleのテーブルやシノニムはAccessのデータベースウィンドウには表示されません。これらをAccessのADPプロジェクトで参照するには,ビューを作りましょう。
CREATE VIEW viwOraTalbe
AS
SELECT
FIELD1,
FIELD2,
FIELD3
FROM
TEST..SCHEMA_A.TABLE
このようにビューを作ってしまえば,ADPプロジェクトのデータベースウィンドウのクエリの画面に表示されるようになります。
|
SQL Server 2005のデータベースコピーウィザードを使う |
データベース |
データベースダイアグラムでエラー発生 |
