こんにちは!CData でテクニカルサポートをしている宮本です。
皆さんは AWS RDS for SQL Server に対して、 SSMS の「新しいリンクサーバー」をクリックしたとき、
このようなエラーが発生したことはありませんか?
「要求されたダイアログを表示できません。(SqlMgmt)」
「必要な操作を完了できませんでした。この操作を実行するには、sysadmin ロールのメンバーでなければなりません。 (SqlManagerUI)」
以前試したときに遭遇したものの、あまり情報がなく諦めてしまっていたのですが、RDS の場合はストアドプロシージャで作成できることがAWS の公式ページに書かれていました。
aws.amazon.com
今回はその 公式ページに書かれている内容を試して、実際に RDS にリンクサーバーを作成してみたいと思います。
SQL Server(EC2またはオンプレミス)からRDS SQL Server
まずはRDS の DB をリンクサーバーとするパターンです。
RDS のテーブルを EC2 やローカルにインストールした SQL Server の場合は、特に難しいことはなく、リンクサーバーを作成する側(今回はローカル)でサーバーオブジェクト --> リンクサーバーと進み、右クリックして「新しいリンクサーバー」から作成できます。
データソースに RDS のURL を指定し、
RDS のログイン情報をセキュリティページで指定します。
作成後は RDS のテーブルがローカル側 SQL Server のリンクサーバーとして表示されます。これでローカル側からも自由に RDS のテーブルにアクセスできるようになります。
RDS SQLServerからSQLServer(EC2またはオンプレミス)
では冒頭にもお伝えしたエラーが発生するパターンの、RDS 側にリンクサーバーを作成する方法についてです。
この場合は、先ほどのようなボタンをポチポチと押して作成するのではなく、ストアドプロシージャを実行して作成します。
公式ではこのストアドが記載されていましたので、
-- Using the DNS name for the remote server EXEC master.dbo.sp_addlinkedserver @server = N’REPLTest2′, @srvproduct=N”, @provider=N’SQLNCLI’, @datasrc=N’repltest2.datacenter.mycompany.com′; EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N’REPLTest2′,@useself=N’False‘,@locallogin=NULL,@rmtuser=N'<username>’,@rmtpassword=‘<password>’; GO
それに沿って設定値を変更して実行しました。
-- Using the DNS name for the remote server EXEC master.dbo.sp_addlinkedserver @server = 'localdb_link', @srvproduct='', @provider='SQLNCLI', @datasrc='接続先'; EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname='localdb_link', @useself='FALSE', @locallogin=NULL, @rmtuser='admin', @rmtpassword='xxxxxxxxxxx'; GO
そうしますと、別の SQL Server のテーブルが RDS SQL Server のリンクサーバーに表示されるようになりました。
SELECT や UPDATE をしてみる
少し気を付けることころはテーブル名の指定部分ですね。
「リンクサーバー名.データベース名.スキーマ名.テーブル名 」
の順で指定する必要があります。
テーブル名さえ気を付ければ、UPDATE も INSERT も DELETE もできるようになりますね。
UPDATE 後。
おわりに
今回は SQL Server 同士でリンクサーバーを構成してみましたが、CData では以下のような構成をとることで、 AWS RDS for SQL Server のリンクサーバーに SaaS データを連携させることができます。
CData ODBC Driver の SQL Gateway を使った方法
www.cdatablog.jp
CData Connet (データハブサービス) を使った方法
www.cdatablog.jp
どちらもトライアル利用が可能です。ぜひお試しくださいください。
- ODBC Driver
CData Software Japan - ODBC Drivers
- CData Connect