.net column

.NET開発者のためのブログメディア

SQL Server 2019でリンクサーバーを作成する方法

2020年03月18日

データベースを利用していると、ログインしているデータベースではなく、ほかのデータベースにアクセスしなければならない場合があります。そんなときにSQL Serverではリンクサーバーを使います。
リンクサーバーを使えば、色々なデータベースをリンク(接続)させることができ、アクセスできるデータベースが限定されなくなるのです。また、SQL Server以外のデータベースへもアクセスが可能です。
ついては当記事で、SQL Server2019におけるリンクサーバーの作成方法から使い方までを解説していきます。

SE
SQL Serverでログインしているデータベース以外のデータを操作したいのですが、何か良い方法はありませんか?
PL
それならリンクサーバーを使うと良いですよ。リンクサーバーを使えば、ログインしているデータベースから別のデータベースへログイン不要でアクセスできるようになります。作成方法と使い方も簡単なので、これを機に学んでおきましょう。

SQL Serverでリンクサーバーを作成する

リンクサーバーを使うには、あらかじめSQL Server側で作成しておく必要があります。
実際にSSMSで作成していきましょう。今回は例として、同じSQL Serverでリンクサーバーを設けます。

まず、「サーバーオブジェクト」→「リンクサーバー」で右クリック、「新しいリンクサーバー」をクリックします。

新しいリンクサーバー

次にリンクサーバーの情報をセットしていきます。
ページ選択の「全般」を開いてください。

情報の設定

基本的な入力および選択項目は以下のとおりです。

  • ・リンクサーバー:作成するリンクサーバーの名称
  • ・サーバーの種類:「その他のデータソース」を選択
  • ・プロバイダー:「SQL Server Native Client 11.0」を選択
  • ・製品名:リンクサーバーを作成(設置)するサーバー名(IPでも可)
  • ・データソース:リンク(接続)するサーバー名(IPでも可)

※他データベースのリンクサーバーを作成する場合、リンクするデータベースに合わせて「プロバイダー」「製品名」「データソース」を入力してください。

続けて、左部ページ選択にて「セキュリティ」タブを開きます。

セキュリティタブ

ここでログインの接続方法を指定しておきます。
今回はすでにログインしているローカルのSQL Serverへのリンクサーバーを作成しているため、「ログインの現在のセキュリティコンテキストを使用する」を選択。

通常は、下の「このセキュリティコンテキストを使用する」を選択して、以下項目を指定します。

  • ・リモートログイン:ユーザー名
  • ・パスワード:接続パスワード

以上で設定は終了、「OK」をクリック。

リンクサーバーの確認

画面のように入力した名称のリンクサーバーが設定されました。

SQL ServerのTransact-SQLを使ってリンクサーバーを作成する

同じリンクサーバーをTransact-SQLを使って作成していきます。
sp_addlinkedserverでリンクサーバーを設定し、sp_addlinkedsrvloginでアクセスのための情報を設定します。

  • ・server:作成するリンクサーバーの名称
  • ・srvproduct:リンクサーバーを作成(設置)するサーバー名(IPでも可)
  • ・datasrc:リンク(接続)するサーバー名(IPでも可)
  • ・provider:SQL Server Native Client 11.0(データベースに応じる)

  • ・rmtsrvname:リンクサーバー名を指定
  • ・useself:基本はfalse(今回はローカル環境内Windows認証のためtrue)
  • ・rmtuser:ユーザー名
  • ・rmtpassword:ログインパスワード

リンクサーバーの確認2

ご覧の通り、新たなリンクサーバーが作成されました。

SE
本当に簡単に作成できるんですね。
PL
リンクするデータベースを指定して、ログイン名とパスワードを設定するだけですからね。これで複数のデータベースへ自由にアクセスできるようになります。

SQL Serverでログイン外のデータベースにアクセスするにはリンクサーバーを使おう

リンクサーバーは一度設定しておくだけで、好きなときに使えるようになります。データベースの入れ替え時など、データが複数に散らかってしまっているときは特に効果を発揮します。ここぞというときのために、SQL Serverのリンクサーバー機能を習得しておきましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)