Babelfish 支援連結的伺服器 - Amazon Aurora

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

Babelfish 支援連結的伺服器

通過使用 3.1.0 版本中的 Postgre SQL tds_fdw 擴展,SQL支持鏈接的服務器。若要使用連接的伺服器,您必須安裝 tds_fdw 擴充功能。如需詳細了解 tds_fdw 擴充功能,請參閱 與支持的外國數據包裝工作 Amazon Aurora 郵政 SQL 郵政 SQL

安裝 tds_fdw 擴充功能

您可以使用以下方法安裝 tds_fdw 擴充功能。

CREATEEXTENSION從端點使用 SQL
  1. Connect 到 Postgre SQL 連接埠中的巴貝魚資料庫上的 Postgre 資料庫執行個體。SQL使用具有 rds_superuser 角色的帳戶。

    psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=test --dbname=babelfish_db --password
  2. 安裝 tds_fdw 擴充功能。這是一次性安裝程序。您不需要在重啟資料庫叢集時重新安裝。

    babelfish_db=> CREATE EXTENSION tds_fdw; CREATE EXTENSION
從TDS端點調用sp_execute_postgresql存儲過程

Babelfish 從 3.3.0 版本開始支援透過呼叫 sp_execute_postgresql 程序來安裝 tds_fdw 擴充功能。您可以在不結束 T SQL 連接埠的情況下,從 T SQL 端點執行 Postgre SQL 陳述式。如需詳細資訊,請參閱 與巴貝爾魚 Aurora 波格雷程序工作 SQL

  1. Connect 至 T 連接埠中巴貝魚資料庫上的 Postgre SQL 資料庫執行個體。SQL

    sqlcmd -S your-DB-instance.aws-region.rds.amazonaws.com -U test -P password
  2. 安裝 tds_fdw 擴充功能。

    1>EXEC sp_execute_postgresql N'CREATE EXTENSION tds_fdw'; 2>go

受支援的功能

Babelfish 支持添加遠程RDSSQL服務器或巴貝魚 Aurora Postgre SQL 端點作為鏈接的服務器。您也可以將其他遠端SQL伺服器執行個體新增為連結伺服器。接著,使用 OPENQUERY() 從這些連結的伺服器擷取資料。從 Babelfish 3.2.0 版開始,也支持四段式名稱。

下列預存程序和目錄檢視皆受到支援,以使用連結的伺服器。

預存程序

  • sp_addlinkedserver – Babelfish 不支援 @provstr 參數。

  • sp_addlinkedsrvlogin

    • 您必須提供明確的遠端使用者名稱和密碼,才能連線到遠端資料來源。您無法透過使用者自我憑證進行連線。Babelfish 僅支援 @useself = false

    • Babelfish 不支援 @locallogin 參數,因為設定特定於本機登入的遠端伺服器存取不受支援。

  • sp_linkedservers

  • sp_helplinkedsrvlogin

  • sp_dropserver

  • sp_droplinkedsrvlogin – Babelfish 不支援 @locallogin 參數,因為設定特定於本機登入的遠端伺服器存取不受支援。

  • sp_serveroption - Babelfish 支援下列伺服器選項:

    • 查詢逾時 (從 Babelfish 3.2.0 版開始)

    • 連線逾時 (從 Babelfish 3.3.0 版開始)

  • sp_testlinkedserver (從 Babelfish 3.3.0 版開始)

  • sp_enum_oledb_providers (從 Babelfish 3.3.0 版開始)

目錄檢視

  • sys.servers

  • sys.linked_logins

對連線使用傳輸中加密

從來源 Aurora Postgre SQL 伺服器 Babelfish 到目標遠端伺服器的連線會使用傳輸中的加密 (TLS/SSL),視遠端伺服器資料庫組態而定。如果遠端伺服器未設定為加密,則 Babelfish 伺服器對遠端資料庫發出的請求將回退為未加密。

強制執行連線加密

從服務器添加巴貝爾魚作為鏈接服務器 SQL

Aurora Postgre 的巴貝爾魚SQL可以從服務器添加為鏈接的服務器。SQL在SQL服務器數據庫上,您可以添加 Babelfish 作為使用 Microsoft 數據OLE庫提供程序的鏈接服務器:. ODBC MSDASQL

有兩種方法可以使用提供程序將 Babelfish 配置為來自服務器的鏈接SQL服務器MSDASQL:

  • 提供ODBC連接字符串作為提供者字符串。

  • 在添加鏈接服務器時提供ODBC數據源系統DSN。

限制

  • OPENQUERY()僅適用於SELECT並且不適用於DML.

  • 由四個部分組成的物件名稱僅適用於讀取,不適用於修改遠端資料表。UPDATE可以參考FROM子句中的遠端資料表,而不需要修改它。

  • 不支援針對 Babelfish 連結伺服器執行預存程序。

  • 若有依賴 OPENQUERY() 的物件或透過四段式名稱參考的物件,則 Babelfish 主要版本升級可能無法運作。在進行主要版本升級之前,您必須確定任何參考 OPENQUERY() 或四段式名稱的物件都已捨棄。

  • 對於遠端 Babelfish 伺服器,下列資料類型無法如預期般運作:nvarchar(max)varchar(max)varbinary(max)binary(max)time。我們建議使用該CAST函數將它們轉換為支持的數據類型。

範例

在下列範例中,Aurora Postgre 專用的 Babelfish SQL 執行個體正在連線至雲端中RDS針對SQL伺服器的執行個體。

EXEC master.dbo.sp_addlinkedserver @server=N'rds_sqlserver', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'myserver.CB2XKFSFFMY7.US-WEST-2.RDS.AMAZONAWS.COM'; EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'rds_sqlserver',@useself=N'False',@locallogin=NULL,@rmtuser=N'username',@rmtpassword='password';

當連結伺服器就位時,您可以使用 T-SQL OPENQUERY () 或標準的四部分命名來參照遠端伺服器上的資料表、檢視或其他支援的物件:

SELECT * FROM OPENQUERY(rds_sqlserver, 'SELECT * FROM TestDB.dbo.t1'); SELECT * FROM rds_sqlserver.TestDB.dbo.t1;

若要捨棄連結的伺服器和所有相關聯的登入:

EXEC master.dbo.sp_dropserver @server=N'rds_sqlserver', @droplogins=N'droplogins';

故障診斷

您可以對來源伺服器和遠端伺服器使用相同的安全群組,以允許它們彼此通訊。安全性群組應該只允許TDS連接埠上的輸入流量 (預設為 1433),而安全性群組中的來源 IP 可以設定為安全性群組識別碼本身。如需如何設定從具有相同安全群組的另一個執行個體連線至執行個體的規則的詳細資訊,請參閱從執行個體使用相同安全群組連線到執行個體的規則

若未正確設定存取權,當您嘗試查詢遠端伺服器時,會出現類似下列範例的錯誤訊息。

TDS client library error: DB #: 20009, DB Msg: Unable to connect: server is unavailable or does not exist (mssql2019.aws-region.rds.amazonaws.com), OS #: 110, OS Msg: Connection timed out, Level: 9