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 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 データにアクセスするには、Aurora 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)
接続に転送中の暗号化を使用する
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 の使用」を参照してください。