SQL Server にも他のデータを取り込んだり読みに行くための仕組みがあります。それが リンクサーバー(Linked Server) です。
リンクサーバーを使うと、別の SQL Server にシームレスにアクセスできるようになります。
システム間の連携が可能となるリンクサーバー、SQL Server で仕組みを構築する上で強力なツールとなります。
設定や使い方は簡単なので、是非ここで知識を習得して使いこなせるようになりましょう。
リンクサーバーを作成する
SQL Server で別の SQL Server のデータを参照するには次の操作が必要です。
- リンクサーバー作成(初回のみ)
- リンクサーバー上のデータオブジェクトを指定して SQL コマンドを実行
リンクサーバー作成手順
リンクサーバーは初回に作成すれば以降はそれを指定するだけで利用可能です。
SQL Server Management Studio(SSMS)で次の図のように操作をしてリンクサーバーを作成します。



接続テストの実行
リンクサーバーを作成したら図のように操作して接続テストを実行して確認しましょう。

リンクサーバーのデータを参照
リンクサーバー上のテーブルを 参照するには次のような SQL コマンドを実行します。
SELECT *
FROM [リンクサーバー名].[データベース名].[スキーマ名].[テーブル名];
例:
SELECT *
FROM LinkedServer01.SalesDB.dbo.Customers;
テーブルの指定部分が少し長くはなりますが、通常のSELECT文と違いが無いので、別の SQL Server 上のデータもシームレスに活用できることが分かると思います。
テーブル一覧を確認する
SQL Server Management Studio でリンクサーバーのアイコンを展開することでリンクサーバーの先に存在するテーブル一覧を確認することができます。
また、次のコマンドを実行することでもテーブル一覧を確認することができます。
EXEC LinkedServer01.master.dbo.sp_tables;
エラー発生時の対応
エラーが発生する場合は次のことを確認してみましょう。
- リンクサーバーが正しく作成できているかテストで確認する
- 相手側の SQL Server の管理者にアクセス権限が適切に設定できているか確認してもらう
リンクサーバーの安全な運用
リンクサーバーは別のシステムの SQL Server のデータへのアクセスになります。別のシステムに障害を発生させてしまうことは避けなければなりません。
このために実施すべき対策をご紹介します。
読み取り専用の運用
別の SQL Server のデータを破壊してしまわないようリンクサーバーを読み取り専用で運用します。
しかし、リンクサーバーを作成する際に読み取り専用の設定にはすることはできません。
リンクサーバーは作成したユーザーの権限で動作します。
そこで、次の手順でリンクサーバーを作成します。
- 相手側の SQL Server で、外部のリンクサーバー用の読み取り専用のユーザーを作成
- 自分側の SQL Server で、上記で作成したユーザーのID、パスワードを用いてリンクサーバーを作成
必要なデータのみ転送・コピー
相手側の SQL Server への参照アクセスが大量になると相手側のシステムの負荷が過剰になったり、不安定になったりするリスクがあります。
このような事態を避けるために、必要なデータを抽出して自分側の SQL Server にデータを転送・コピーして利用します。
別の SQL Server のデータが必要な場合だとしても、リアルタイムで更新されている最新データが必要とは限りません。多くのケースで1日に1回程度のデータ更新でも十分に利用価値があります。
また、相手側の SQL Server 上のデータも全てが必要でなければ、データ項目(列フィールド)やフィルターによる絞り込みをしてデータ量を減らして取得することでサーバー処理負荷、データ容量の観点でリソースの節約をすることができます。
このために具体的に次のようなステップで運用します。
- 自分側の SQL Server 上で データ転送受け用のテーブル を作成(列フィールドも必要最小限に絞る)
- 相手側の SQL Server への リンクサーバー を作成
- データ転送用の SQL クエリを作成(DELETE & INSERT)
- バッチジョブを作成し、定期的に データ転送用 SQLクエリ を実行
まとめ
多くのデータを取り込むことはデータベース・システム構築の第一歩です。
リンクサーバーは当該のサーバー以外のデータへのアクセスを可能とするものです。
一度リンクサーバーを構築できればデータはシームレスに利用ができ、SQL によるデータ処理も可能になります。
SQL Server を活用している方は是非リンクサーバーでデータ活用の幅を広げてみて下さい。

