SQL Server 入門 SQL Server 入門

ホーム > 便利なT-SQL&クエリー集 > SQL Server へのリンクサーバ (Linked Server) の設定方法

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 文を実行して、リンクサーバを作ります。

EXEC sp_addlinkedserver
       @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 認証の場合
EXEC sp_addlinkedsrvlogin
       @rmtsrvname = 'LS1', --リンクサーバの名前
       @useself = 'FALSE', --ログイン名とパスワードを送信する時は FALSE
       @locallogin = 'sa', -- ローカルサーバ上のログイン
       @rmtuser = 'sa', -- ログイン名
       @rmtpassword = 'testsa'; -- パスワード
Windows 認証の場合
EXEC sp_addlinkedsrvlogin
       @rmtsrvname = 'LS1',
       @useself = 'TRUE'; --ログイン自身の情報を使用する時はTRUE

Window 認証の場合は、ログインしているユーザが接続先の SQL Server へのアクセスが許可されていなければいけません。

リンクサーバ LS1 作成の結果

リンクサーバ (Linked Server) からテーブルの値を取得する

リンクサーバ (Linked Server) を介してテーブルから値を取得するには以下のようにクエリーを書きます。

SELECT * FROM [ リンクサーバ名 ].[ データベース名 ].[ スキーマ名 ].[ テーブル名 ]

例えば、リンクサーバ LS1 の TestDB という名前のデータベースの dbo スキーマの Students テーブルの値を取得するには以下のようになります。

SELECT   *
FROM     LS1.TestDB.dbo.Students;
リンクサーバ LS1 の Select の結果

リンクサーバ LS1 からデータが取得できましたね。

SQL Server 関連の人気書籍
ホーム > 便利なT-SQL&クエリー集 > SQL Server へのリンクサーバ (Linked Server) の設定方法