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 sie in SQL Server dargestellt werden.
Für dieses Verfahren müssen Sie ein datenbankbezogenes Anmeldedatenpaar (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 Hauptschlüssel der Datenbank (Database Master Key, DMK) verschlüsselt.
Der DMK dient als Stamm der Verschlüsselungshierarchie in einer Datenbank und schützt vertrauliche Informationen in datenbankbezogenen Anmeldedaten. Dieser symmetrische Schlüssel wird mit dem Dienst-Masterschlüssel (Service Master Key, SMK) und einem vom Nutzer bereitgestellten Passwort verschlüsselt. Der DMK wird nicht automatisch erstellt und muss vom Nutzer explizit mit T-SQL verwaltet werden.
Der SMK dient als Stamm 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 zu verwendenden Hauptschlüssel. 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, und 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.
Definieren Sie das Schema und die Struktur der externen Daten:
- 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 Remotetabelle.
- 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 geheime 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 Basisauthentifizierung 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 mit der Dateistruktur übereinstimmen.
- 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 von Ihnen erstellte externe Cloud Storage-Tabelle ab.
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 Hauptschlüssels der Datenbank nach einem Datenbankwiederherstellungsvorgang
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 bereitgestellten 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 bei der Erstellung festgelegten Nutzerpasswort entschlüsseln und 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.