• 検索結果がありません。

STEP 3. Integration Services による エクスポートとインポート

3.7 リンク サーバーによる外部データのクエリ

64

次に、[サーバーの種類]で「その他のデータ ソース」を選択して、[プロバイダー]で

「Microsoft Office 12.0 Access Database Engine OLE DB Provider」を選択します。

[製品名]へは、任意の文字(画面は Access 2010)を入力し、[データ ソース]へ Access データベース(.accdb または .mdb ファイル)へのパスを入力します(ここでは、

C:\temp\ノースウィンド.accdb)。

設定後、[OK]ボタンをクリックすれば、リンク サーバーの作成が完了です。

Note: [製品名]や[プロバイダー文字列]の設定

リンク サーバーの設定画面の、データ ソースに対する[プロバイダー]や[製品名](product_name)、[プロ バイダー文字列](provider_string)については、SQL Server オンライン ブックの Transact-SQL リファレン スにある「sp_addlinkedserver」で詳しく解説されています。

3. 作成したリンク サーバーを次のように展開すると、Access データベース内のテーブルの一 覧を参照することができます。

1

プロバイダ名 や製品名

66

Note: エラー「アクセスが拒否されました」や「初期化できませんでした」が表示される場合

テーブルを展開するときに、次のように「アクセスが拒否されました」エラーが発生する場合は、OPENROWSET ときと同様、「AllowInProcess」と「DynamicParameters」プロパティを有効化しておくようにします。

また、「データ ソース オブジェクトが初期化できませんでした」エラーが発生する場合は、SQL Server のサービ アカウントの temp フォルダーに対して NTFS アクセス許可を設定したり、ファイルのパスが間違っていない かなどを確認してみてください。

4. 次に、作成したリンク サーバー「NW」を利用して、「社員」テーブルのデータを参照してみ ましょう。

SELECT * FROM NW...社員

1

リンク サーバーでは、「リンク サーバー名.データベース名.スキーマ名.テーブル名」という 構文でテーブルへアクセスできますが、Access の場合は、リンク サーバー自体がデータベ ースなので、データベース名を省略しています。また、Access にはスキーマも存在しないの で、これも省略して、「NW...社員」と記述しています。

このようにリンク サーバー機能を利用すると、OPENROWSET 関数のように、毎回プロバイ ダーを指定したり、接続パスを書かなくて済むようになるので、大変便利です。

Note: コマンドでリンク サーバーを作成する: sp_addlinkedserver

リンク サーバーは、sp_addlinkedserver システム ストアド プロシージャを利用して、コマンドで作成するこ とも可能です。これは、次のように利用します。

EXEC master..sp_addlinkedserver @server = N'NW'

, @srvproduct = N'Access 2010'

, @provider = N'Microsoft.ACE.OLEDB.12.0' , @datasrc = N'C:\temp\ノースウィンド.accdb'

スクリプト生成機能

GUI ベースで作成したリンク サーバーは、次のようにスクリプト生成機能を利用して、sp_addlinkedserver

自動生成できるので、便利です。

1

sp_addlinkedserver が自動生成される 2

68

リモート SQL Server に対してリンク サーバーを作成する場合

リモートの SQL Server(別マシンにインストールされた SQL Server 2012 や下位バージョン の SQL Server)に対してリンク サーバーを作成する場合は、次のように操作します。

1. まず、Management Studio で[リンク サーバー]フォルダーを右クリックして[新しいリ ンク サーバー]をクリックします。

2. [新しいリンク サーバー]ダイアログが表示されたら、[サーバーの種類]で「SQL Server」

を選択し、[リンク サーバー]へ接続先の SQL Server のインスタンス名を入力(画面は BAMBOO)します。

3. 次に、[ページの選択]で「セキュリティ」をクリックして、[セキュリティ]ページを開き、

任意の接続方法を選択します。

1

SQL Server の 名前を記述 2

1

画面のように「ログインの現在のセキュリティ コンテキストを使用する」をチェックした場 合は、現在ログインしているユーザー情報を利用して、リモートの SQL Server へのログイ ンを試みるようになります。設定後、[OK]ボタンをクリックすれば、リンク サーバーの作 成が完了です

4. リンク サーバー作成後は、設定した SQL Server 上のデータベースの一覧やテーブルを参照 できるようになります。

クエリを実行するときの構文は、前述したように「リンク サーバー名.データベース名.スキ ーマ名.テーブル名」と 4 つの名前を指定します(画面は BAMBOO という名前の SQL

Server の sampleDB データベース、dbo スキーマ内の「社員」テーブルをクエリしてい

ます)。なお、リンク サーバーが名前付きインスタンスの場合は、[BAMBOO\SQL1] のよ

1

2

3

リモートSQL Server の データベースやテーブルを

一覧できる 1

リンクサーバーを 利用したクエリ実行 2

70