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



AWS RDS for SQL Server は、バックアップ、パッチ適用、高可用性などの管理タスクを簡素化するマネージドデータベースサービスです。しかし、このマネージドモデルには、管理者権限に関する制限など、いくつかの制約があります。

よくある課題の1つがリンクサーバーの作成です。標準的なオンプレミスまたはEC2ホスト型の SQL Server 環境では、SQL Server Management Studio(SSMS)から直接リンクサーバーを作成できます。AWS RDS for SQL Server では、このUIベースのアプローチは利用できません。

この記事では、サポートされているストアドプロシージャを使用して AWS RDS for SQL Server でリンクサーバーを作成し使用する方法を説明します。また、リンクサーバーが設定された後、リモートテーブルのクエリと更新を行う方法も学びます。

AWS RDS におけるリンクサーバーの制限を理解する

AWS RDS for SQL Server インスタンスに対して SSMS を使用してリンクサーバーを作成しようとすると、次のようなエラーが発生する場合があります:

  • '要求されたダイアログを表示できません。'
  • 'この操作を実行するには sysadmin ロールのメンバーである必要があります。'

これらのエラーは、AWS RDS が完全な sysadmin 権限を付与しないために発生します。SSMS ウィザードを使用する代わりに、AWS はリンクサーバーを管理するためのサポートされたシステムストアドプロシージャを提供しています。

シナリオ 1: オンプレミスまたは EC2 SQL Server から RDS SQL Server へのリンク

オンプレミスまたは EC2 ホスト型の SQL Server から AWS RDS for SQL Server リンクサーバーを作成する場合、プロセスは簡単です。

この場合、標準の SSMS ワークフローを使用できます:

  1. SSMS を開き、ローカルまたは EC2 SQL Server インスタンスに接続します。
  2. サーバー オブジェクトリンク サーバーに移動します。
  3. 右クリックして新しいリンク サーバーを選択します。
  4. データソースとして RDS エンドポイントを指定します。
  5. RDS SQL Server の認証情報を使用してセキュリティを構成します。

作成後、RDS データベースとテーブルがリンクサーバーとして表示され、ローカルテーブルと同様にクエリできるようになります。

シナリオ 2: AWS RDS SQL Server から別の SQL Server へのリンク

AWS RDS SQL Server からリンクサーバーを作成するには、SSMS UI を使用するのではなく、ストアドプロシージャを直接実行する必要があります。

AWS はこの目的のために sp_addlinkedserversp_addlinkedsrvlogin をサポートしています。

リンクサーバーの作成

EXEC master.dbo.sp_addlinkedserver
    @server = 'localdb_link',
    @srvproduct = '',
    @provider = 'SQLNCLI',
    @datasrc = 'your-target-server-hostname';

ログインマッピングの構成

EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname = 'localdb_link',
    @useself = 'FALSE',
    @locallogin = NULL,
    @rmtuser = 'admin',
    @rmtpassword = 'your_password';
GO

これらのコマンドが正常に完了すると、リモート SQL Server が RDS インスタンス内のリンクサーバーとして表示されます。

リンクサーバーを介したデータのクエリと更新

リンクサーバーを介してテーブルをクエリする際は、次の形式を使用してオブジェクト名を完全修飾する必要があります:

リンクサーバー名.データベース名.スキーマ名.テーブル名

SELECT の例

SELECT *
FROM localdb_link.SalesDB.dbo.Orders;

UPDATE の例

UPDATE localdb_link.SalesDB.dbo.Orders
SET Status = 'Processed'
WHERE OrderID = 1001;

権限が正しく構成されている限り、リンクサーバー間で SELECTINSERTUPDATEDELETE 操作を実行できます。

SaaS およびクラウドデータへのリンクサーバーの拡張

この記事では SQL Server 間の接続に焦点を当てていますが、多くの組織では SaaS やクラウドアプリケーションのデータもリンクサーバー経由で公開したいと考えています。

CData ODBC ドライバーCData Connect AIなどのツールを使用すると、Salesforce、Dynamics 365、クラウド API などのアプリケーションからのデータを SQL アクセス可能なソースとして利用できます。これらは、上記で説明したものと同じリンクサーバーの概念を使用して、AWS RDS を含む SQL Server にリンクできます。


ライブのクラウドおよび SaaS データで SQL Server を強化

ユースケースが SQL Server 間の統合を超える場合、CData を使用すると、SQL Server および AWS RDS は標準 SQL を使用して数百の SaaS アプリケーションおよびクラウドサービスからライブデータをクエリできます。

外部データをリレーショナルテーブルとして公開するCData ODBC ドライバーの詳細をご覧いただくか、分析および AI ワークロード向けに安全でガバナンスの効いたリアルタイムデータアクセスを提供するCData Connect AIをお試しください。