Amazon RDS for SQL Serverでリンクサーバーを設定する方法になります。
SQL Serverのバージョンは2019です。
RDSだと管理者権限が無いので設定できないと思ったのですが、設定できました。
以下、イメージ図です。
同じVPC内にあります。(AZ構成は省略)
前提
・RDSは作成済。
・SSMSで以下の操作からリンクサーバーを作成しようとするとエラーになる。
「サーバーオブジェクト」→「リンクサーバー」で右クリック、「新しいリンクサーバー」をクリックすると、「sysadminロールのメンバーでなければなりません。」と怒られます。
・なので、SSMSでTransact-SQLを使用して、リンクサーバーを作成する。
DB名:Test1(Testテーブル1つだけ作成)
DB名:Test2(Testテーブル1つだけ作成)
手順
Test1 から Test2へのリンクサーバーの設定を行う
1. リンクサーバーを作成するクエリを2つ作る
1-1. sp_addlinkedserverでリンクサーバーを設定
EXEC master.dbo.sp_addlinkedserver @server = N'LINK_Test2', @srvproduct='', @provider='SQLNCLI', @datasrc='xxxxx.xxxxx.ap-northeast-1.rds.amazonaws.com';
・server:作成するリンクサーバーの名前(何でもOK)
・srvproduct:リンクサーバーを作成するサーバー名(未指定で大丈夫)
・provider:リンクサーバーとして追加するOLE DBソース名(設定値:「SQLNCLI」)
※「SQLNCLI」を指定すると最新バージョンのClient OLE DBとなる
・datasrc:接続するRDSのエンドポイント
1-2. sp_addlinkedsrvloginでアクセスのための情報を設定
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LINK_Test2', @useself='FALSE', @locallogin=NULL, @rmtuser='ユーザー名', @rmtpassword='パスワード';
・rmtsrvname:リンクサーバー名を指定(設定値:@serverと同じ名称)
・useself:基本はfalse(Windows認証したい場合は「true」)
・locallogin:ローカルサーバー上のログイン(設定値:NULL ※規定値もNULL)
・rmtuser:ユーザー名(@datasrcのDBに接続するユーザー名)
・rmtpassword:パスワード(@datasrcのDBに接続するパスワード)
2. クエリーを発行する。
リンクサーバーの設定により、別インスタンスにあるTest2内のテーブルが参照
することができました。
Test2 ⇒ Test1へのリンクサーバの設定も同様の手順で実施できます。
補足1
今回はRDS同士のリンクサーバーの設定でしたが、
EC2 on SQL Server と RDS for SQL Serverでもリンクサーバの設定は可能です。
※実施してはいませんが、公式サイトに記載がありました。
補足2
リンクサーバの削除はSSMSのGUIでできました。
削除するコマンド調べないで良かった。。
参考サイト
以下、公式サイトでの設定方法
以下、リンクサーバの設定方法