Babelfish unterstützt verknüpfte Server - Amazon Aurora

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Babelfish unterstützt verknüpfte Server

Babelfish für Aurora PostgreSQL unterstützt verknüpfte Server mithilfe der PostgreSQL-Erweiterung tds_fdw in Version 3.1.0. Sie müssen die Erweiterung tds_fdw installieren, um mit verknüpften Servern arbeiten zu können. Weitere Informationen über die Erweiterung tds_fdw finden Sie unter Arbeiten mit den unterstützten Fremddaten-Wrapper für Amazon Aurora Postgre SQL.

Installieren der Erweiterung tds_fdw

Sie können die Erweiterung tds_fdw mit den folgenden Methoden installieren.

Verwendung von CREATE EXTENSION vom PostgreSQL-Endpunkt aus
  1. Stellen Sie in der Babelfish-Datenbank im PostgreSQL-Port eine Verbindung mit Ihrer PostgreSQL-DB-Instance her. Verwenden Sie ein Konto, das über die Rolle rds_superuser verfügt.

    psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=test --dbname=babelfish_db --password
  2. Installieren Sie die tds_fdw-Erweiterung. Dies ist ein einmaliger Installationsvorgang. Sie müssen keine erneute Installation vornehmen, wenn der DB-Cluster neu gestartet wird.

    babelfish_db=> CREATE EXTENSION tds_fdw; CREATE EXTENSION
Aufruf der gespeicherten Prozedur sp_execute_postgresql vom TDS-Endpunkt aus

Babelfish unterstützt die Installation der Erweiterung tds_fdw durch Aufrufen der Prozedur sp_execute_postgresql ab Version 3.3.0. Sie können PostgreSQL-Anweisungen vom T-SQL-Endpunkt aus ausführen, ohne den T-SQL-Port zu verlassen. Weitere Informationen finden Sie unter Referenz zu Verfahren für Babelfish für Aurora PostgreSQL.

  1. Stellen Sie in der Babelfish-Datenbank im T-SQL-Port eine Verbindung zu Ihrer PostgreSQL-DB-Instance her.

    sqlcmd -S your-DB-instance.aws-region.rds.amazonaws.com -U test -P password
  2. Installieren Sie die tds_fdw-Erweiterung.

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

Unterstützte Funktionen

Babelfish unterstützt das Hinzufügen von Remote-Endpunkten von RDS für SQL Server oder Babelfish für Aurora PostgreSQL als verknüpften Server. Sie können auch andere Remote-Instances von SQL Server als verknüpfte Server hinzufügen. Verwenden Sie dann OPENQUERY(), um Daten von diesen verknüpften Servern abzurufen. Ab Babelfish Version 3.2.0 werden auch vierteilige Namen unterstützt.

Die folgenden gespeicherten Prozeduren und Katalogansichten werden unterstützt, um die verknüpften Server zu verwenden.

Gespeicherte Prozeduren

  • sp_addlinkedserver – Babelfish unterstützt den Parameter @provstr nicht.

  • sp_addlinkedsrvlogin

    • Sie müssen einen expliziten Remote-Benutzernamen und ein Passwort angeben, um eine Verbindung zu der Remote-Datenquelle herzustellen. Sie können keine Verbindung mit den eigenen Anmeldeinformationen des Benutzers herstellen. Babelfish unterstützt nur @useself = false.

    • Babelfish unterstützt den Parameter @locallogin nicht, da die Konfiguration des Remote-Serverzugriffs für die lokale Anmeldung nicht unterstützt wird.

  • sp_linkedservers

  • sp_helplinkedsrvlogin

  • sp_dropserver

  • sp_droplinkedsrvlogin – Babelfish unterstützt den Parameter @locallogin nicht, da die Konfiguration des Remote-Serverzugriffs für die lokale Anmeldung nicht unterstützt wird.

  • sp_serveroption – Babelfish unterstützt die folgenden Serveroptionen:

    • Abfrage-Timeout (ab Babelfish-Version 3.2.0)

    • Verbindungs-Timeout (ab Babelfish-Version 3.3.0)

  • sp_testlinkedserver (ab Babelfish-Version 3.3.0)

  • sp_enum_oledb_providers (ab Babelfish-Version 3.3.0)

Katalogansichten

  • sys.servers

  • sys.linked_logins

Verwenden der Verschlüsselung während der Übertragung für die Verbindung

Die Verbindung vom Quellserver von Babelfish für Aurora PostgreSQL mit dem Remote-Zielserver verwendet je nach Datenbankkonfiguration des Remote-Servers die Verschlüsselung während der Übertragung (TLS/SSL). Wenn der Remote-Server nicht für die Verschlüsselung konfiguriert ist, bleibt der Babelfish-Server, der die Anforderung an die Remote-Datenbank stellt, unverschlüsselt.

So erzwingen Sie die Verbindungsverschlüsselung

  • Wenn der verknüpfte Zielserver eine Instance von RDS für SQL Server ist, legen Sie rds.force_ssl = on für die Ziel-Instance von SQL Server fest. Weitere Informationen zur SSL/TLS-Konfiguration für RDS für SQL Server finden Sie unter Verwenden von SSL mit einer Microsoft-SQL-Server-DB-Instance.

  • Wenn es sich bei dem verknüpften Zielserver um einen Cluster von Babelfish für Aurora PostgreSQL handelt, legen Sie babelfishpg_tsql.tds_ssl_encrypt = on und ssl = on für den Zielserver fest. Weitere Informationen zu SSL/TLS finden Sie unter SSL-Einstellungen und Clientverbindungen für Babelfish.

Hinzufügen von Babelfish als verknüpften Server über SQL Server

Babelfish für Aurora PostgreSQL kann über einen SQL Server als verknüpfter Server hinzugefügt werden. In einer SQL-Server-Datenbank können Sie Babelfish als verknüpften Server hinzufügen, indem Sie den Anbieter von Microsoft OLE DB für ODBC verwenden: MSDASQL.

Es gibt zwei Möglichkeiten, Babelfish mithilfe des Anbieters MSDASQL über SQL Server als verknüpften Server zu konfigurieren:

  • Angeben der ODBC-Verbindungszeichenfolge als Anbieterzeichenfolge

  • Angeben des System-DSN der ODBC-Datenquelle, während der verknüpfte Server hinzugefügt wird

Einschränkungen

  • OPENQUERY() funktioniert nur für SELECT und nicht für DML.

  • Vierteilige Objektnamen funktionieren nur zum Lesen und nicht zum Ändern der entfernten Tabelle. Ein UPDATE kann in der FROM-Klausel auf eine entfernte Tabelle verweisen, ohne sie zu ändern.

  • Die Ausführung von gespeicherten Prozeduren auf mit Babelfish verknüpften Servern wird nicht unterstützt.

  • Das Upgrade der Hauptversion von Babelfish funktioniert möglicherweise nicht, wenn Objekte von OPENQUERY() abhängig sind oder Objekte durch vierteilige Namen referenziert werden. Sie müssen sicherstellen, dass alle Objekte, die auf OPENQUERY() oder vierteilige Namen verweisen, vor einem Upgrade der Hauptversion gelöscht werden.

  • Die folgenden Datentypen funktionieren auf dem Babelfish-Remote-Server nicht wie erwartet: nvarchar(max), varchar(max), varbinary(max), binary(max) und time. Wir empfehlen, die CAST-Funktion zu verwenden, um diese in unterstützte Datentypen zu konvertieren.

Beispiel

Im folgenden Beispiel stellt eine Babelfish-für-Aurora-PostgreSQL-Instance eine Verbindung zu einer Instance von RDS für SQL Server in der Cloud her.

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';

Wenn der verbundene Server eingerichtet ist, können Sie T-SQL OPENQUERY() oder eine vierteilige Standardbenennung verwenden, um auf eine Tabelle, Ansicht oder andere unterstützte Objekte auf dem Remote-Server zu verweisen:

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

So löschen Sie den verbundenen Server und alle verbundenen Logins:

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

Fehlerbehebung

Sie können für Quell- und Remoteserver dieselbe Sicherheitsgruppe verwenden, um eine Kommunikation beider Server zu ermöglichen. Die Sicherheitsgruppe sollte nur eingehenden Datenverkehr am TDS-Port (standardmäßig 1433) zulassen und die Quell-IP in der Sicherheitsgruppe kann als Sicherheitsgruppen-ID selbst festgelegt werden. Weitere Informationen zum Einrichten der Regeln für die Verbindung zu einer Instance von einer anderen Instance mit derselben Sicherheitsgruppe finden Sie unter Regeln für die Verbindung mit Instances von einer Instance mit der gleichen Sicherheitsgruppe aus.

Wenn der Zugriff nicht richtig konfiguriert ist, wird eine Fehlermeldung ähnlich wie das folgende Beispiel angezeigt, wenn Sie versuchen, den Remote-Server abzufragen.

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