使用 tds_fdw 副檔名來處理SQL伺服器資料庫 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 tds_fdw 副檔名來處理SQL伺服器資料庫

您可以使用 Postgre SQL tds_fdw 擴充功能來存取支援表格式資料流 (TDS) 通訊協定的資料庫,例如 Sybase 和 Microsoft SQL 伺服器資料庫。此外部資料包裝函式可讓您RDS從 Postgre 資料庫 資料SQL庫叢集連線到使用該TDS通訊協定的資料庫,包括適用RDS於 Microsoft SQL 伺服器的 Amazon。如需詳細資訊,請參閱上的 tds-fdw/tds_fdw 文件集。 GitHub

tds_fdw擴展程序在 Amazon Aurora Postgre SQL 版本 13.6 和更高版本上受到支持。

設置您的 Aurora 後SQL數據庫以使用 tds_fdw 擴展

在下列程序中,您可以找到設定和使用搭配 Postgre 資料庫執行tds_fdw個叢集的範例。SQL在您可以使用連接到SQL服務器數據庫之前tds_fdw,您需要獲取實例的下列詳細信息:

  • 主機名稱或端點。對RDS於SQL伺服器資料庫執行個體,您可以使用主控台尋找端點。選擇 Connectivity & security (連線和安全) 索引標籤,然後查看「端點和連線埠」區段。

  • 連線埠號碼。Microsoft SQL 服務器的默認端口號是 1433。

  • 資料庫的名稱。資料庫識別符。

您還需要為SQL伺服器連接埠 1433 提供安全性群組或存取控制清單 (ACL) 的存取權。叢集和SQL伺服器RDS資料庫執行個體都需要存取連接埠 1433。如果未正確設定存取,當您嘗試查詢 Microsoft SQL 伺服器時,您會看到下列錯誤訊息︰

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
  1. 使用具有以下rds_superuser角色的帳戶 Connect 到 Postgre SQL 資料個體 Aurora Postgre 資料庫叢集的主要執行個體:

    psql --host=your-cluster-name-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=test –-password
  2. 安裝 tds_fdw 擴充功能:

    test=> CREATE EXTENSION tds_fdw; CREATE EXTENSION

在的 Aurora Postgre SQL 資料庫叢集上安裝擴充功能後,即可設定外部伺服器。SQL

建立外部伺服器

使用具rds_superuser有權限的帳戶,在 Postgre SQL 資料庫執行個叢集上執行這些工作。

  1. 在用於 Postgre 資料庫執行個體的 Aurora Postgre SQL 資料庫叢集中建立外部伺服器:SQL

    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資料,使用 Postgre 資料庫執行個體的 Aurora Postgre 資料SQL庫叢集中的字元集選項建立伺服器連結:SQL

    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
  2. 將權限授予沒有 rds_superuser 角色權限的使用者,例如 user1

    test=> GRANT USAGE ON FOREIGN SERVER sqlserverdb TO user1;
  3. 以使用者 1 的身分 Connect,並建立與SQL伺服器使用者的對應:

    test=> CREATE USER MAPPING FOR user1 SERVER sqlserverdb OPTIONS (username 'sqlserveruser', password 'password'); CREATE USER MAPPING
  4. 建立連結至SQL伺服器資料表的外部資料表:

    test=> CREATE FOREIGN TABLE mytab (a int) SERVER sqlserverdb OPTIONS (table 'MYTABLE'); CREATE FOREIGN TABLE
  5. 查詢外部資料表:

    test=> SELECT * FROM mytab; a --- 1 (1 row)

對連線使用傳輸中加密

Postgre SQL RDS SQL 到伺服器的 Aurora 連線會根據SQL伺服器資料庫組態使用傳輸中的加密 (TLS/SSL)。SQL如果SQL伺服器未設定為加密,則向SQL伺服器資料庫發出要求的 Postgre SQL 用戶端會回復RDS為未加密狀態。

您可以透過設定rds.force_ssl參數來強制執行SQL伺RDS服器資料庫執行個體的連線加密。若要瞭解如何操作,請參閱強制連線至資料庫執行個體以供使用SSL。如需伺服器SSL/TLS設定的詳細資訊,請參閱SSL搭配 Microsoft SQL SQL 伺服器資料庫執行個體搭配使用。RDS