【DB】【SQL Server】リンクサーバー(Linked Server)とは

最近はデータベース関連の案件が増えてきましたので、再度データベースの基本から学びなおしています。

今回は「リンクサーバー」について解説します。

 

 

 

リンクサーバーとは?

リンクサーバーを利用することで、今ログインしている DB から他の DB へ、ログイン手続きなしでアクセスできるようになります。

Oracle には DBリンクがありますが、Microsoft SQL Server の場合は「リンクサーバー」と言います。

リンク(接続)できるのは Microsoft SQL Server だけでなく Oracle も PostgreSQL など異なるデータベースマネジメントシステム(DBMS)も可能です。

リンクサーバーを設定すると、SQL Server から Oracle のデータベースに接続してデータを取得したり、表を結合することができるようになります。

 

 

リンクサーバーのメリット

リンクサーバーを構築すると何のメリットがあるのでしょうか。

一番のメリットは「SQL Server の外に存在する DB のデータリソースに SQL Server からコマンドを実行できる」ようになります。す。

その結果、DB サーバーのリプレイスやバージョンアップ等をする際に新 DB と旧 DB を並行して運用することができます。

 

実際に企業内には SQL Server、Oracle、MySQL、PostgreSQL など様々な DB が存在します。

しかもバージョンも異なります。

このような様々なデータに対してクエリやコマンドを実行できます。

また、同じプログラムで異なる DB のデータへアクセスできるようになります。

 

リンクサーバーのメリットまとめ

 

 

 

SQL Server から他のデータベース(Oracle等)に接続する場合

SQL Server から他のデータベース(Oracle、PostgreSQL 等)に接続する場合、OLE DB 接続をします。

 

リンクサーバーは SQL Server Management Studio か Transact-SQL から設定する

リンクサーバーは「SQL Server Management Studio」もしくは「Transact-SQL」から設定できます。

SQL Server Management Studio を使用して別の DB へのリンクサーバーを作成する場合は GUI 上より設定が可能です。

Transact-SQL から設定する場合は CUI 上より設定が可能です。

 

Transact-SQL からリンクサーバーを作成する

Transact-SQL からリンクサーバーを作成する例です。

 

sp_addlinkedserver を利用します。

 

参考ページ:sp_addlinkedserver (Transact-SQL)

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-stored-procedures/sp-addlinkedserver-transact-sql?view=sql-server-2017

 

 

sp_addlinkedserver でリンクサーバーを作成する構文

sp_addlinkedserver

     [ @server= ] 'server'

     [ , [ @srvproduct= ] 'product_name' ]
     [ , [ @provider= ] 'provider_name' ]
     [ , [ @datasrc= ] 'data_source' ]
     [ , [ @location= ] 'location' ]
     [ , [ @provstr= ] 'provider_string' ]
     [ , [ @catalog= ] 'catalog' ] 

 

 

sp_addlinkedserver でリンクサーバーを作成する例

sp_addlinkedserver

     @server = N'Test01',

     @srvproduct= N'SQL Server',
     @provider= N'SQLNCLI', 
     @datasrc= N'TEST-ORIGINAL01\TEST01';

 

 

SQL 文でアクセスが可能

リンクサーバーの設定が完了すれば以下のように SQL 文でアクセスをすることが可能になります。

 

リンクサーバーのデータにアクセスする例

SELECT * FROM リンクサーバー名.スキーマ名.テーブル名

 

 

OLE DB(Object Linking and Embedding Database)とは

OLE DB は Object Linking and Embedding Database の略です。

OLE DB とは Microsoft 社がアプリケーションソフトがデータを保管・管理するソフトウェア(Microsoft SQL Server、Oracle、PostgreSQL など)に接続し、データの取得や書き込み、操作などを行う方法の標準を定めたものです。

つまり OLE DB とは概念ということになります。

 

OLE DB Provider(OLE DB プロバイダー)を使用するとプログラムは OLE DB で定められた標準的な手続きによりデータに接続できます。

OLE DB Provider は DB だけでなく Excel などにも接続することができます。

 

他には ODBC などがあります。

 

ODBC(Open Database Connectivity)とは

ODBC とは Open Database Connectivity の略です。

ODBC を利用すると、様々なデータベースにアクセスするための共通のインターフェイスを利用できます。

 

 

逆パターンも可能(Oracle → SQL Server)

リンクサーバーは SQL Server から異なる DB へのアクセスでしたが、逆に Oracle から SQL Server へのアクセスも可能です。

 

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人