SQL Server へのリンクサーバ (Linked Server) の設定方法
SQL Server へのリンクサーバ (Linked Server) を作成する
このページでは SQL Server へのリンクサーバ (Linked Server) の設定方法をご紹介します。
リンクサーバ (Linked Server) の作り方
まず、リンクサーバ (Linked Server) を作るには、 sp_addlinkedserver というシステムストアードプロシジャーを使います。
sp_addlinkedserver の構文は以下の通りです。
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] [ , [ @provider= ] 'provider_name' ] [ , [ @datasrc= ] 'data_source' ] [ , [ @location= ] 'location' ] [ , [ @provstr= ] 'provider_string' ] [ , [ @catalog= ] 'catalog' ]
そして、sp_addlinkedsrvlogin システムストアードプロシジャーを使って、リンクサーバ (Linked Server) のセキュリティーアカウントと SQL Server のローカル インスタンスのログインのマッピングを作成します。
sp_addlinkedsrvlogin の構文は以下の通りです。
sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname' [ , [ @useself = ] 'TRUE' | 'FALSE' | NULL ] [ , [ @locallogin = ] 'locallogin' ] [ , [ @rmtuser = ] 'rmtuser' ] [ , [ @rmtpassword = ] 'rmtpassword' ]
リンクサーバ (Linked Server) を作ってみよう
では、 LS1 というリンクサーバ (Linked Server) を作ってみましょう。
1. 以下の SQL 文を実行して、リンクサーバを作ります。
@server = 'LS1', --リンクサーバの名前
@srvproduct = '',
@provider = 'SQLNCLI', -- プロバイダーの名前
@datasrc = '192.168.5.10'; -- ロケーション(IPアドレスやサーバ名)
SQL Server のリンクサーバ (Linked Server) を作る際には、プロバイダーを SQLNCLI を設定すると、自動的に一番新しい Server Native Client OLE DB Provider を選択してくれます。 ちなみにプロバイダーを省略しても SQLNCLI が使われます。
デフォルトインスタンスではない場合はロケーションに 192.168.5.10\[インスタンス名] のように指定すれば OK です。
2. 次に、SQL Server のローカル インスタンスのログインとリンクサーバ (Linked Server ) のマッピングを作成します。
SQL Server 認証の場合@rmtsrvname = 'LS1', --リンクサーバの名前
@useself = 'FALSE', --ログイン名とパスワードを送信する時は FALSE
@locallogin = 'sa', -- ローカルサーバ上のログイン
@rmtuser = 'sa', -- ログイン名
@rmtpassword = 'testsa'; -- パスワード
@rmtsrvname = 'LS1',
@useself = 'TRUE'; --ログイン自身の情報を使用する時はTRUE
Window 認証の場合は、ログインしているユーザが接続先の SQL Server へのアクセスが許可されていなければいけません。
リンクサーバ (Linked Server) からテーブルの値を取得する
リンクサーバ (Linked Server) を介してテーブルから値を取得するには以下のようにクエリーを書きます。
SELECT * FROM [ リンクサーバ名 ].[ データベース名 ].[ スキーマ名 ].[ テーブル名 ]
例えば、リンクサーバ LS1 の TestDB という名前のデータベースの dbo スキーマの Students テーブルの値を取得するには以下のようになります。
FROM LS1.TestDB.dbo.Students;
リンクサーバ LS1 からデータが取得できましたね。