tds_fdw 拡張機能による SQL Server データベースの操作
PostgreSQL tds_fdw 拡張機能を使用して、Sybase や Microsoft SQL Server データベースなど、表形式データストリーム (TDS) プロトコルをサポートするデータベースにアクセスできます。この外部データラッパーを使用すると、 Aurora PostgreSQL DB クラスターを、Amazon RDS for Microsoft SQL Server を含む、TDS プロトコルを使用するデータベースに接続できます。詳細については、GitHub にある tds-fdw/tds_fdw
tds_fdw 拡張機能は、Amazon Aurora PostgreSQL バージョン 13.6 以降でサポートされています。
tds_fdw 拡張機能を使用するように Aurora PostgreSQL DB をセットアップする
次の手順では、tds_fdw をセットアップして、Aurora PostgreSQL DB クラスターと使用する例を示します。tds_fdw を使用して SQL Server データベースに接続する前に、インスタンスの次の詳細を取得する必要があります。
ホスト名またはエンドポイント。RDS for SQL Server DB インスタンスの場合、コンソールを使用してエンドポイントを見つけることができます。[Connectivity & security] (接続とセキュリティ) タブを選択し、[Endpoint and port] (エンドポイントとポート) セクションを確認します。
ポート番号。Microsoft SQL Server のデフォルトポート番号は 1433 です。
データベースの名前 DB 識別子。
また、SQL Server ポート、1433 のセキュリティグループまたはアクセスコントロールリスト (ACL) でのアクセスを提供する必要があります。Aurora PostgreSQL DB クラスターと RDS for SQL Server DB インスタンスの両方が、ポート 1433 にアクセスする必要があります。アクセスが正しく設定されていない場合、Microsoft SQL Server をクエリしようとすると、次のエラーメッセージが表示されます。
ERROR: DB-Library error: DB #: 20009, DB Msg: Unable to connect:
Adaptive Server is unavailable or does not exist (mssql2019.aws-region.rds.amazonaws.com), OS #: 0, OS Msg: Success, Level: 9
tds_fdw を使用して SQL Server データベースに接続するには
rds_superuserロールがあるアカウントを使用して、Aurora PostgreSQL DB クラスターのプライマリインスタンスに接続します。psql --host=your-cluster-name-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=test –-passwordtds_fdw拡張機能をインストールします。test=>CREATE EXTENSION tds_fdw;CREATE EXTENSION
Aurora PostgreSQL DB クラスター に拡張機能をインストールした後、外部サーバーをセットアップします。
外部サーバーを作成するには
rds_superuser 権限があるアカウントを使用する Aurora PostgreSQL DB クラスターで次のタスクを実行します。
Aurora PostgreSQL DB クラスターで外部サーバーを作成します。
test=>CREATE SERVERsqlserverdbFOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing');CREATE SERVERSQLServer 側で非 ASCII データにアクセスするには、Aurora PostgreSQL DB クラスターの character_set オプションを使用してサーバーリンクを作成します。
test=>CREATE SERVERsqlserverdbFOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing', character_set'UTF-8');CREATE SERVERrds_superuserロール権限を持たないユーザーに、(例えばuser1として) 許可を付与します。test=>GRANT USAGE ON FOREIGN SERVERsqlserverdbTOuser1;user1 として接続し、SQL Server ユーザーへのマッピングを作成します。
test=>CREATE USER MAPPING FOR user1 SERVERsqlserverdbOPTIONS (username 'sqlserveruser', password 'password');CREATE USER MAPPINGSQL Server テーブルにリンクされた外部テーブルを作成します。
test=>CREATE FOREIGN TABLE mytab (a int) SERVERsqlserverdbOPTIONS (table 'MYTABLE');CREATE FOREIGN TABLE外部テーブルに対しクエリを実行します。
test=>SELECT * FROM mytab;a --- 1 (1 row)
接続に転送中の暗号化を使用する
Aurora PostgreSQL から SQL Server への接続には、SQL Server のデータベース設定に応じて、転送中の暗号化 (TLS/SSL) を使用します。SQL Server が暗号化用に設定されていない場合、SQL Server データベースへの要求を行う RDS for PostgreSQL クライアントは、暗号化されていない状態に戻ります。
rds.force_ssl パラメータを設定して、RDS for SQL Server DB インスタンスへの接続に暗号化を強制できます。この方法については、「DB インスタンスへの接続に SSL を使用させる」を参照してください。RDS for SQL Server での SSL/TLS 設定の詳細については、「Microsoft SQL Server DB インスタンスでの SSL の使用」を参照してください。