本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 tds_fdw 擴充功能處理 SQL 資料庫
您可以使用 PostgreSQL tds_fdw 擴充功能來存取支援表格式資料串流 (TDS) 協議的資料庫,如 Sybase 和 Microsoft SQL Server 資料庫。此外部資料包裝函式可讓您從 Aurora PostgreSQL 資料庫叢集連線到使用 TDS 協議的資料庫,包括 Amazon RDS for Microsoft SQL Server。如需詳細資訊,請參閱 GitHub 上的 tds-fdw/tds_fdw
Amazon Aurora PostgreSQL 版本 13.6 及更新版本支援 tds_fdw 擴充功能。
設定 Aurora PostgreSQL 資料庫以使用 tds_fdw 擴充功能
在以下程序中,您可以找到設定及使用 tds_fdw 與 Aurora PostgreSQL 資料庫叢集 的範例。您必須取得執行個體的以下詳細內容,然後才能使用 tds_fdw 連線到 SQL Server 資料庫:
主機名稱或端點。如果是 RDS for SQL Server 資料庫執行個體,您可以使用主控台找到端點。選擇 Connectivity & security (連線和安全) 索引標籤,然後查看「端點和連線埠」區段。
連線埠號碼。Microsoft SQL 伺服器的預設連線埠號是 1433。
資料庫的名稱。資料庫識別符。
您也必須提供 SQL 連線埠 1433 的安全群組或存取控制清單 (ACL) 的存取權限。Aurora PostgreSQL 資料庫叢集 和 RDS for SQL 資料庫執行個體都需要存取連線埠 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 資料庫叢集的主要執行個體:psql --host=your-cluster-name-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=test –-password安裝
tds_fdw擴充功能:test=>CREATE EXTENSION tds_fdw;CREATE EXTENSION
擴充功能安裝到您的 Aurora PostgreSQL 資料庫叢集 之後,您就可以設定外部伺服器。
建立外部伺服器
使用有 rds_superuser 權限的帳戶,在 Aurora PostgreSQL 資料庫叢集上執行這些任務。
在 Aurora PostgreSQL 資料庫叢集中建立外部伺服器:
test=>CREATE SERVERsqlserverdbFOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing');CREATE SERVER如要存取 SQLServer 端上的非 ASCII 資料,請使用 Aurora PostgreSQL 資料庫叢集 中的 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 SERVER將權限授予沒有
rds_superuser角色權限的使用者,例如user1:test=>GRANT USAGE ON FOREIGN SERVERsqlserverdbTOuser1;以 user1 身分連線,然後建立一個 SQL Server 使用者的映射:
test=>CREATE USER MAPPING FOR user1 SERVERsqlserverdbOPTIONS (username 'sqlserveruser', password 'password');CREATE USER MAPPING建立連結至 SQL 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 的連線使用傳輸中加密 (TLS/SSL),具體取決於 SQL Server 資料庫組態。如果 SQL 伺服器未設定為加密,則 RDS for PostgreSQL 用戶端對 SQL Server 資料庫發出的請求將回退為未加密。
您可以透過設定 rds.force_ssl 參數,強制加密 RDS for SQL Server 資料庫執行個體的連線。若要了解作法,請參閱強制使用 SSL 連線至資料庫執行個體。如需有關 RDS for SQL Server 的 SSL/TLS 組態的詳細資訊,請參閱對 Microsoft SQL Server 資料庫執行個體使用 SSL。