Auf dieser Seite erfahren Sie, wie Sie externe Datenquellen für die Verwendung mit PolyBase und Ihren Cloud SQL for SQL Server-Instanzen konfigurieren und verwalten.
Zugriff auf externe Objekte verwalten
Cloud SQL unterstützt nur Vorgänge zum Aktivieren und Deaktivieren von PolyBase. Nutzer müssen SQL Server-Entitäten manuell mit T-SQL-Anweisungen verwalten.
Bevor Sie Ihre SQL Server-Entitäten manuell verwalten, sollten Sie die folgenden Microsoft-Ressourcen lesen:
- MASTER KEY mit T-SQL erstellen
- PolyBase für den Zugriff auf externe Daten in Oracle konfigurieren
- PolyBase für den Zugriff auf externe Daten in S3-kompatiblem Objektspeicher konfigurieren
Externe Datenquelle erstellen
In den folgenden Schritten wird beschrieben, wie Sie eine externe Datenquelle für Ihre Cloud SQL for SQL Server-Instanz erstellen.
In SQL Server wird eine externe Datenquelle als Ressource mit Verbindungsinformationen wie Servername, Datenbankname und Verbindungsstring definiert.
In SQL Server werden externe Tabellen als Metadatenobjekte in SQL Server definiert, die auf die Daten in den externen Datenquellen verweisen. Sie definieren das Schema der externen Daten, wie es in SQL Server dargestellt wird.
Für dieses Verfahren müssen Sie Anmeldedaten mit Datenbankbereich (Database-Scoped Credential, DSC) für Ihre externe Datenquelle erstellen.
In DSCs werden die Authentifizierungsinformationen gespeichert, die für die Verbindung mit den externen Datenquellen erforderlich sind. Diese Anmeldedaten werden mit dem Masterschlüssel der Datenbank (Database Master Key, DMK) verschlüsselt.
Der DMK dient als Stamm der Verschlüsselungshierarchie in einer Datenbank und schützt Secrets in datenbankbezogenen Anmeldedaten. Dieser symmetrische Schlüssel wird mit dem Dienst-Masterschlüssel (Service Master Key, SMK) und einem vom Nutzer angegebenen Passwort verschlüsselt. Der DMK wird nicht automatisch erstellt und muss vom Nutzer explizit mit T-SQL verwaltet werden.
Der SMK dient als Root der Verschlüsselungshierarchie für eine bestimmte Instanz von SQL Server. Dieser symmetrische Schlüssel wird beim ersten Start automatisch von SQL Server generiert und zum Schutz anderer Sicherheitsobjekte wie DMKs und Anmeldepasswörter verwendet.
Oracle
Führen Sie die folgenden Schritte in SQL Server aus.
Erstellen Sie datenbankbezogene Anmeldedaten (Database-Scoped Credential, DSC) für Oracle.
Wenn noch keine vorhanden ist, wechseln Sie zu einer Nutzerdatenbank, um einen Hauptschlüssel zu erstellen:
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';Ersetzen Sie Folgendes:
- USER_DB: Die Nutzerdatenbank, die Sie zum Erstellen des Hauptschlüssels verwenden möchten.
Beispiel:
polybasedb. - MK_PASSWORD: Das Passwort für den Hauptschlüssel, den Sie verwenden möchten. Speichern Sie das Passwort für den Hauptschlüssel zur späteren Verwendung.
- USER_DB: Die Nutzerdatenbank, die Sie zum Erstellen des Hauptschlüssels verwenden möchten.
Beispiel:
Erstellen Sie datenbankbezogene Anmeldedaten für die Oracle-Datenquelle.
CREATE DATABASE SCOPED CREDENTIAL DB_CREDENTIAL_NAME WITH IDENTITY = 'EXTERNAL_DATABASE_USERNAME', SECRET = 'EXTERNAL_DATABASE_PASSWORD';Ersetzen Sie Folgendes:
- DB_CREDENTIAL_NAME: Der Name der Anmeldedaten, die Sie für die externe Datenbank verwenden möchten.
- EXTERNAL_DATABASE_USERNAME: Der Nutzername, den Sie für den Zugriff auf die externe Datenbank verwenden möchten.
- EXTERNAL_DATABASE_PASSWORD: Das Passwort für die externe Datenbank. Zugangsdaten für externe Datenquellen müssen aktualisiert werden, wenn sie rotiert werden. Sie müssen von Ihnen manuell verwaltet werden.
Erstellen Sie eine externe Datenquelle für Oracle.
CREATE EXTERNAL DATA SOURCE DATA_SOURCE_NAME WITH ( LOCATION = 'oracle://SERVER_IP:PORT', PUSHDOWN = PUSHDOWN, CREDENTIAL = DB_CREDENTIAL_NAME );Ersetzen Sie Folgendes:
- DATA_SOURCE_NAME: Der Name, den Sie für die externe Datenbank verwenden möchten.
- SERVER_IP: die IP-Adresse des Servers oder der Hostname.
- PORT: der Port, den Sie verwenden möchten.
- PUSHDOWN: erforderlich. Pushdown ist eine Funktion, die in SQL Server verfügbar ist und konfiguriert werden muss. Legen Sie den Wert je nach Anwendungsfall auf
ONoderOFFfest. - DB_CREDENTIAL_NAME: die Anmeldedaten, die Sie gerade erstellt haben.
Erstellen Sie eine externe Tabelle.
Schema und Struktur der externen Daten definieren:
- Erstellen Sie die Definition der externen Tabelle. Das Schema muss mit der Remotetabelle übereinstimmen.
- Definieren Sie Spalten mit geeigneten SQL Server-Datentypen und ‑Sortierungen.
- Der Speicherort ist der Pfad zur Remote-Tabelle.
CREATE EXTERNAL TABLE EXTERNAL_TABLE_NAME( COLUMN_NAME_1 DATA_TYPE_1 COLLATE COLLATION_1, COLUMN_NAME_2 DATA_TYPE_2 COLLATE COLLATION_2, ... ) WITH( LOCATION = 'REMOTE_DATABASE.REMOTE_USERNAME.REMOTE_TABLE_NAME', DATA_SOURCE = DB_DATA_SOURCE_NAME );Ersetzen Sie Folgendes:
- EXTERNAL_TABLE_NAME: Der Name der externen Tabelle, die Sie erstellen möchten.
- COLUMN_NAME_1: Der Name der ersten Spalte der Tabelle.
- DATA_TYPE_1: Der Datentyp der ersten Spalte.
- COLLATION_1: Die Sortierung, die Sie für die erste Spalte verwenden möchten.
- COLUMN_NAME_2: Der Name der zweiten Spalte der Tabelle.
- DATA_TYPE_2: Der Datentyp der zweiten Spalte.
- COLLATION_2: Die Sortierung, die Sie für die zweite Spalte verwenden möchten.
- REMOTE_DATABASE: Der Name der Remotedatenbank.
- REMOTE_USERNAME: Der Nutzername des Remote-Nutzers.
- REMOTE_TABLE_NAME: der Name der Remote-Tabelle.
- DB_DATA_SOURCE_NAME: der Name der externen Datenquelle.
Fragen Sie die von Ihnen erstellte externe Oracle-Tabelle ab.
SELECT TOP 10 * FROM EXTERNAL_TABLE_NAME;Ersetzen Sie Folgendes:
- EXTERNAL_TABLE_NAME: der Name der externen Tabelle, die Sie abfragen möchten.
Cloud Storage
Führen Sie die folgenden Schritte in SQL Server aus.
Erstellen Sie datenbankbezogene Anmeldedaten für Cloud Storage.
Wenn noch keine vorhanden ist, wechseln Sie zu einer Nutzerdatenbank, um einen Hauptschlüssel zu erstellen:
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';Ersetzen Sie Folgendes:
- USER_DB: Die Nutzerdatenbank, die Sie zum Erstellen des Hauptschlüssels verwenden möchten.
Beispiel:
polybasedb. - MK_PASSWORD: Das Passwort, das Sie für den Hauptschlüssel verwenden möchten. Speichern Sie das Passwort für den Hauptschlüssel zur späteren Verwendung.
- USER_DB: Die Nutzerdatenbank, die Sie zum Erstellen des Hauptschlüssels verwenden möchten.
Beispiel:
Für Cloud Storage sind eine Zugriffsschlüssel-ID und eine Secret-Schlüssel-ID erforderlich:
CREATE DATABASE SCOPED CREDENTIAL STORAGE_CREDENTIAL_NAME WITH IDENTITY = 'S3 Access Key', SECRET = 'ACCESS_KEY_ID:SECRET_KEY_ID';Ersetzen Sie Folgendes:
- STORAGE_CREDENTIAL_NAME: Der Name der Cloud Storage-Anmeldedaten, die Sie verwenden möchten.
- ACCESS_KEY_ID: die ID des Zugriffsschlüssels.
- SECRET_KEY_ID: Die ID des geheimen Schlüssels.
Es wird nur die einfache Authentifizierung unterstützt.
Erstellen Sie eine externe Datenquelle.
CREATE EXTERNAL DATA SOURCE STORAGE_DATA_SOURCE_NAME WITH ( LOCATION = 's3://storage.googleapis.com/', CREDENTIAL = STORAGE_CREDENTIAL_NAME );Ersetzen Sie Folgendes:
- STORAGE_DATA_SOURCE_NAME: Der Name der externen Datenquelle in Cloud Storage.
- STORAGE_CREDENTIAL_NAME: der Name der Anmeldedaten für die externe Speicherressource.
Erstellen Sie eine externe Tabelle für Cloud Storage.
Definieren Sie das Format und die Struktur der externen Daten:
- Erstellen Sie die externe Datei. Das Schema muss der Dateistruktur entsprechen.
- Definieren Sie Spalten mit geeigneten SQL Server-Datentypen und ‑Sortierungen.
- Der Speicherort ist der Pfad innerhalb der Datenquelle.
CREATE EXTERNAL FILE FORMAT FILE_FORMAT_NAME WITH ( FORMAT_TYPE = FORMAT_TYPE, FORMAT_OPTIONS ( FIELD_TERMINATOR = 'FIELD_TERMINATOR', STRING_DELIMITER = 'DELIMITER', FIRST_ROW = FIRST_ROW ) ); CREATE EXTERNAL TABLE FILE_EXTERNAL_TABLE_NAME ( COLUMN_NAME_1 DATA_TYPE_1, COLUMN_NAME_2 DATA_TYPE_2, ... ) WITH ( LOCATION = 'PATH_TO_BUCKET/FILENAME', DATA_SOURCE = STORAGE_DATA_SOURCE_NAME, FILE_FORMAT = FILE_FORMAT_NAME );Ersetzen Sie Folgendes:
- FILE_FORMAT_NAME: Der Name des externen Dateiformats, das Sie erstellen möchten.
- FORMAT_TYPE: der Formattyp, den Sie verwenden möchten, z. B.
DELIMITEDTEXT. Eine Liste der unterstützten Werte finden Sie unter Unterstützte Dateiformate. - FIELD_TERMINATOR: Das Feldtrennzeichen, das Sie verwenden möchten.
- DELIMITER: Das zu verwendende Stringtrennzeichen.
- FIRST_ROW: Die Zeile, ab der Sie lesen möchten.
- FILE_EXTERNAL_TABLE_NAME: Der Name der externen Tabelle, die Sie erstellen möchten.
- COLUMN_NAME_1: Der Name der ersten Spalte der Tabelle.
- DATA_TYPE_1: Der Datentyp der ersten Spalte.
- COLUMN_NAME_2: Der Name der zweiten Spalte der Tabelle.
- DATA_TYPE_2: Der Datentyp der zweiten Spalte.
- PATH_TO_BUCKET: der vollständige Pfad zum Cloud Storage-Bucket.
- FILENAME: der Dateiname im Cloud Storage-Bucket.
- STORAGE_DATA_SOURCE_NAME: Der Name der externen Datenquelle in Cloud Storage.
- FILE_FORMAT_NAME: der Name des externen Dateiformats.
Fragen Sie die externe Cloud Storage-Tabelle ab, die Sie erstellt haben.
SELECT * FROM FILE_EXTERNAL_TABLE_NAME;Ersetzen Sie Folgendes:
- FILE_EXTERNAL_TABLE_NAME: der Name der externen Tabelle, die Sie abfragen möchten.
Verwalten des Datenbank-Hauptschlüssels nach einer Datenbankwiederherstellung
Die datenbankbezogenen Anmeldedaten, die für den Zugriff auf externe Datenquellen verwendet werden, werden mit einem Datenbank-Masterschlüssel (Database Master Key, DMK) verschlüsselt.
Der DMK wird mit dem Diensthauptschlüssel (Service Master Key, SMK) der Quellinstanz und dem vom Nutzer angegebenen DMK-Passwort verschlüsselt. Auf der Quellinstanz öffnet SQL Server den DMK im Hintergrund mit einem SMK.
Wenn Sie eine Cloud SQL for SQL Server-Instanz wiederherstellen, wird der DMK aufgrund von Änderungen am SMK nicht automatisch auf der neuen Instanz geöffnet.
Daher müssen Sie den DMK zuerst mit dem Nutzerpasswort entschlüsseln, das bei der Erstellung festgelegt wurde, und ihn dann mit dem SMK der Zielinstanz neu verschlüsseln.
Weitere Informationen finden Sie in den folgenden Microsoft-Ressourcen:
Logs
Die folgenden PolyBase-Logs sind im Log-Explorer verfügbar:
Polybase_Dms_errors.logPolybase_Dms_movement.logPolybase_DWEngine_errors.logPolybase_DWEngine_movement.logPolybase_DWEngine_server.log
Weitere Informationen finden Sie in der Microsoft-Dokumentation zur Fehlerbehebung bei PolyBase.