PostgreSQL tds_fdw
拡張機能を使用して、Sybase や Microsoft SQL Server データベースなど、表形式データストリーム (TDS) プロトコルをサポートするデータベースにアクセスできます。この外部データラッパーを使用すると、RDS for PostgreSQL DB インスタンス を、Amazon RDS for Microsoft SQL Server を含む、TDS プロトコルを使用するデータベースに接続できます。詳細については、GitHub にある tds-fdw/tds_fdw
tds_fdw
拡張機能は、Amazon RDS for PostgreSQL のバージョン 14.2、13.6、およびそれ以降のリリースでサポートされています。
tds_fdw 拡張機能を使用するように Aurora PostgreSQL DB をセットアップする
次の手順では、tds_fdw
をセットアップして、RDS for 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) でのアクセスを提供する必要があります。RDS for 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
ロールがあるアカウントを使用して、PostgreSQL DB インスタンスに接続します。psql --host=
your-DB-instance
.aws-region
.rds.amazonaws.com --port=5432 --username=test –-passwordtds_fdw
拡張機能をインストールします。test=>
CREATE EXTENSION tds_fdw;
CREATE EXTENSION
RDS for PostgreSQL DB インスタンスに拡張機能をインストールした後、外部サーバーをセットアップします。
外部サーバーを作成するには
rds_superuser
権限があるアカウントを使用する RDS for PostgreSQL DB インスタンスで次のタスクを実行します。
RDS for PostgreSQL DB インスタンスで外部サーバーを作成します。
test=>
CREATE SERVER
sqlserverdb
FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019
.aws-region
.rds.amazonaws.com', port '1433', database 'tds_fdw_testing
');CREATE SERVER
SQLServer 側で非 ASCII データにアクセスするには、RDS for PostgreSQL DB インスタンスの character_set オプションを使用してサーバーリンクを作成します。
test=>
CREATE SERVER
sqlserverdb
FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019
.aws-region
.rds.amazonaws.com', port '1433', database 'tds_fdw_testing
', character_set'UTF-8'
);CREATE SERVER
rds_superuser
ロール権限を持たないユーザーに、(例えばuser1
として) 許可を付与します。test=>
GRANT USAGE ON FOREIGN SERVER
sqlserverdb
TOuser1
;user1 として接続し、SQL Server ユーザーへのマッピングを作成します。
test=>
CREATE USER MAPPING FOR user1 SERVER
sqlserverdb
OPTIONS (username 'sqlserveruser
', password 'password
');CREATE USER MAPPING
SQL Server テーブルにリンクされた外部テーブルを作成します。
test=>
CREATE FOREIGN TABLE mytab (a int) SERVER
sqlserverdb
OPTIONS (table 'MYTABLE
');CREATE FOREIGN TABLE
外部テーブルに対しクエリを実行します。
test=>
SELECT * FROM mytab;
a --- 1 (1 row)
接続に転送中の暗号化を使用する
RDS for 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 の使用」を参照してください。