OPENROWSET 関数では、毎回クエリの実行時にプロバダ名や接続パスを記述する必要がある ので、何度もクエリを実行する場合には面倒です。これを解決してくれる機能が「リンク サーバ ー」です。リンク サーバーを利用すると、何度もゕクセスするリモート データ(接続先)に対し て、名前を付けて保存しておくことができます。
Let's Try
それでは、これを試してみましょう。ここでは、Access 2003 データベースの Northwind サン プル データベース(Northwind.mdb)に対して、リンク サーバーを作成する手順を試してみ ましょう。
1. リンク サーバーを作成するには、まず Management Studio のオブジェクト エクスプロー ラで[サーバー オブジェクト]を展開し、[リンク サーバー]フォルダを右クリックして[新 しいリンク サーバー]をクリックします。
これにより、[新しいリンク サーバー]ダゕログが表示されるので、[リンク サーバー]へ 任意の名前(今回は、NW)を入力します。
次に、[サーバーの種類]で「その他のデータ ソース」を選択して、[プロバダ]で
1
1
2
「Microsoft.Jet 4.0 OLEDB Provider」を選択します。[製品名]へは、任意の文字(ここ では Access 2003)を入力し、[データソース]へ Access データベース(.mdb フゔル)
へのパスを入力します(ここでは、C:\Program Files\Microsoft Office\OFFICE11\
SAMPLES\Northwind.mdb)。
設定後、[OK]ボタンをクリックすれば、リンク サーバーの作成が完了です。
Note: [製品名]や[プロバイダ文字列]の設定
リンク サーバーの設定画面の、データソースに対する[プロバイダ]や[製品名](product_name)、[プロバイ ダ文字列](provider_string)については、SQL Server オンラン ブックの Transact-SQL リフゔレンスにあ る「sp_addlikedserver」で詳しく解説されています。
2. 作成したリンク サーバーを次のように展開すると、Access データベース内のテーブルの一 覧を参照することができます。
1
プロバダ名 や製品名
1
3. 次に、作成したリンク サーバー「NW」を利用して、「社員」テーブルのデータを参照してみ ましょう。
SELECT * FROM NW...社員
リンクサーバーでは、「リンクサーバー名.データベース名.スキーマ名.テーブル名」という構 文でテーブルへゕクセスできますが、Access の場合は、リンクサーバー自体がデータベース なので、データベース名を省略しています。また、Access にはスキーマも存在しないので、
これも省略して、「NW...社員」と記述しています。
このようにリンク サーバー機能を利用すると、OPENROWSET 関数のように、毎回プロバ
ダを指定したり、接続パスを欠かなくて済むようになるので、大変便利です。
Note: コマンドでリンクサーバーを作成する: sp_addlinkedserver
リンクサーバーは、sp_addlinkedserver システム ストゕド プロシージャを利用して、コマンドで作成すること も可能です。これは、次のように利用します。
EXEC master..sp_addlinkedserver @server = N'NW'
, @srvproduct=N'Access 2003'
, @provider=N'Microsoft.Jet.OLEDB.4.0'
, @datasrc=N'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb'
■ スクリプト生成機能
GUI ベースで作成したリンクサーバーは、次のようにスクリプト生成機能を利用して、sp_addlinkedserver を自 動生成できるので、便利です。
1
sp_addlinkedserver が自動生成される 2