Arbeiten mit SQL-Server-Datenbanken unter Verwendung der Erweiterung tds_fdw - 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.

Arbeiten mit SQL-Server-Datenbanken unter Verwendung der Erweiterung tds_fdw

Sie können die PostgreSQL-Erweiterung tds_fdw für den Zugriff auf Datenbanken verwenden, die das TDS-Protokoll (Tabular Data Stream) unterstützen, wie Sybase- und Microsoft-SQL-Server-Datenbanken. Mit diesem Fremddaten-Wrapper können Sie sich von Ihrem Aurora-PostgreSQL-DB-Cluster aus mit Datenbanken verbinden, die das TDS-Protokoll verwenden, einschließlich Amazon RDS for Microsoft SQL Server. Weitere Informationen finden Sie in der tds-fdw/tds_fdw-Dokumentation auf GitHub.

Die Erweiterung tds_fdw wird von den Amazon-Aurora-PostgreSQL-Versionen 13.6 und höher unterstützt.

Einrichten Ihrer Aurora-PostgreSQL-DB zur Verwendung der tds_fdw-Erweiterung

In den folgenden Verfahren finden Sie ein Beispiel für die Einrichtung und Verwendung der Erweiterung tds_fdw mit einem Aurora-PostgreSQL-DB-Cluster. Bevor Sie eine Verbindung mit einer SQL-Server-Datenbank mithilfe von tds_fdw herstellen können, benötigen Sie die folgenden Details für die Instance:

  • Hostname oder Endpunkt. Sie können den Endpunkt für eine RDS-for-SQL-Server-DB-Instance mithilfe der Konsole ermitteln. Wählen Sie die Registerkarte „Connectivity & security“ (Konnektivität und Sicherheit) aus und sehen Sie im Abschnitt „Endpoint and port“ (Endpunkt und Port) nach.

  • Port-Nummer. Die Standardport-Nummer für Microsoft SQL Server ist 1433.

  • Name der Datenbank. Die DB-ID.

Sie müssen auch Zugriff auf die Sicherheitsgruppe oder die Zugriffssteuerungsliste (ACL) für den SQL-Server-Port 1433 gewähren. Sowohl der Aurora-PostgreSQL-DB-Cluster als auch die RDS-for-SQL-Server-DB-Instance benötigen Zugriff auf Port 1433. Wenn der Zugriff nicht richtig konfiguriert ist, wird beim Versuch, den Microsoft SQL Server abzufragen, die folgende Fehlermeldung angezeigt:

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
So verbinden Sie sich mit tds_fdw mit einer SQL-Server-Datenbank
  1. Verbinden Sie sich mit Ihrer primären Instance des Aurora-PostgreSQL-DB-Clusters über ein Konto mit der rds_superuser-Rolle:

    psql --host=your-cluster-name-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=test –-password
  2. Installieren Sie die tds_fdw-Erweiterung.

    test=> CREATE EXTENSION tds_fdw; CREATE EXTENSION

Nachdem die Erweiterung auf Ihrem Aurora-PostgreSQL-DB-Cluster installiert wurde, richten Sie den fremden Server ein.

So erstellen Sie den fremden Server

Führen Sie diese Aufgaben auf dem Aurora-PostgreSQL-DB-Cluster unter Verwendung eines Kontos mit rds_superuser-Berechtigungen aus.

  1. Erstellen Sie einen fremden Server auf dem Aurora-PostgreSQL-DB-Cluster:

    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

    Um auf Nicht-ASCII-Daten auf der SQLServer-Seite zuzugreifen, erstellen Sie einen Serverlink mit der Option character_set im DB-Cluster von Aurora PostgreSQL:

    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. Gewähren Sie einem Benutzer, der keine rds_superuser-Rollenberechtigungen hat, Berechtigungen, zum Beispiel user1:

    test=> GRANT USAGE ON FOREIGN SERVER sqlserverdb TO user1;
  3. Stellen Sie eine Verbindung als „user1“ (Benutzer 1) her und erstellen Sie dann eine Zuordnung zum SQL-Server-Benutzer:

    test=> CREATE USER MAPPING FOR user1 SERVER sqlserverdb OPTIONS (username 'sqlserveruser', password 'password'); CREATE USER MAPPING
  4. Erstellen Sie eine fremde Tabelle, die mit einer SQL-Server-Tabelle verknüpft ist:

    test=> CREATE FOREIGN TABLE mytab (a int) SERVER sqlserverdb OPTIONS (table 'MYTABLE'); CREATE FOREIGN TABLE
  5. Fragen Sie die fremde Tabelle ab:

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

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

Die Verbindung von Aurora PostgreSQL mit SQL Server verwendet je nach SQL-Server-Datenbankkonfiguration die Verschlüsselung während der Übertragung (TLS/SSL). Wenn der SQL Server nicht für die Verschlüsselung konfiguriert ist, bleibt der RDS-für-PostgreSQL-Client, der die Anforderung an die SQL-Server-Datenbank stellt, unverschlüsselt.

Sie können die Verschlüsselung für die Verbindung mit RDS-for-SQL-Server DB-Instances erzwingen, indem Sie den rds.force_ssl-Parameter festlegen. Weitere Informationen finden Sie unter Erzwingen von Verbindungen mit Ihrer DB-Instance, um SSL zu verwenden. Weitere Informationen zur SSL/TLS-Konfiguration für RDS for SQL Server finden Sie unter Verwenden von SSL mit einer Microsoft-SQL-Server-DB-Instance.