Microsoft SQL Server-Daten in BigQuery laden
Mit dem Connector für Microsoft SQL Server im BigQuery Data Transfer Service können Sie Daten aus Microsoft SQL Server in BigQuery laden. Der Microsoft SQL Server-Connector unterstützt das Laden von Daten aus Microsoft SQL Server-Instanzen, die in lokalen Umgebungen und bei anderen Cloud-Anbietern wie Cloud SQL, Amazon Web Services (AWS) oder Microsoft Azure gehostet werden. Mit dem BigQuery Data Transfer Service können Sie On-Demand- und wiederkehrende Datenübertragungsjobs erstellen, um Daten aus Ihrer Microsoft SQL Server-Instanz in BigQuery zu übertragen.
Beschränkungen
Für Microsoft SQL Server-Datenübertragungsjobs gelten die folgenden Einschränkungen:
- Die Anzahl gleichzeitiger Verbindungen zu einer Microsoft SQL Server-Datenbank ist begrenzt. Daher ist auch die Anzahl der gleichzeitigen Übertragungen zu einer einzelnen Microsoft SQL Server-Datenbank begrenzt. Achten Sie darauf, dass die Anzahl der gleichzeitigen Übertragungsjobs geringer ist als die maximale Anzahl gleichzeitiger Verbindungen, die von der Microsoft SQL Server-Datenbank unterstützt werden.
- Einige Microsoft SQL Server-Datentypen werden möglicherweise dem Typ
STRINGin BigQuery zugeordnet, um Datenverlust zu vermeiden. Bestimmte numerische Typen in Microsoft SQL Server, für die keine Genauigkeit und Skalierung definiert sind, werden beispielsweise möglicherweiseSTRINGin BigQuery zugeordnet. Weitere Informationen finden Sie unter Datentypzuordnung.
Optionen für die Datenaufnahme
Im folgenden Abschnitt finden Sie Informationen zu den Optionen für die Datenerfassung, wenn Sie eine Microsoft SQL Server-Datenübertragung einrichten.
TLS-Konfiguration
Der Microsoft SQL Server-Connector unterstützt die Konfiguration für Transport Layer Security (TLS), um Ihre Datenübertragungen in BigQuery zu verschlüsseln. Der Microsoft SQL Server-Connector unterstützt die folgenden TLS-Konfigurationen:
- Daten verschlüsseln und Zertifizierungsstelle und Hostname bestätigen: In diesem Modus wird der Server mit TLS über das TCPS-Protokoll vollständig validiert. Sie verschlüsselt alle übertragenen Daten und prüft, ob das Zertifikat des Datenbankservers von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde. In diesem Modus wird auch geprüft, ob der Hostname, zu dem Sie eine Verbindung herstellen, genau mit dem allgemeinen Namen (Common Name, CN) oder einem alternativen Antragstellernamen (Subject Alternative Name, SAN) im Zertifikat des Servers übereinstimmt. In diesem Modus wird verhindert, dass Angreifer ein gültiges Zertifikat für eine andere Domain verwenden, um sich als Ihr Datenbankserver auszugeben.
- Wenn Ihr Hostname nicht mit dem CN oder SAN des Zertifikats übereinstimmt, schlägt die Verbindung fehl. Sie müssen eine DNS-Auflösung konfigurieren, die dem Zertifikat entspricht, oder einen anderen Sicherheitsmodus verwenden.
- Verwenden Sie diesen Modus, um PITM-Angriffe (Person-in-the-Middle) zu verhindern.
- Daten verschlüsseln und nur CA bestätigen: In diesem Modus werden alle Daten mit TLS über das TCPS-Protokoll verschlüsselt und es wird geprüft, ob das Zertifikat des Servers von einer Zertifizierungsstelle signiert ist, der der Client vertraut. In diesem Modus wird der Hostname des Servers jedoch nicht überprüft. In diesem Modus wird eine Verbindung hergestellt, solange das Zertifikat gültig ist und von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde. Dabei spielt es keine Rolle, ob der Hostname im Zertifikat mit dem Hostnamen übereinstimmt, mit dem Sie eine Verbindung herstellen.
- Verwenden Sie diesen Modus, wenn Sie sicherstellen möchten, dass Sie eine Verbindung zu einem Server herstellen, dessen Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle signiert ist, der Hostname jedoch nicht überprüft werden kann oder Sie keine Kontrolle über die Hostname-Konfiguration haben.
- Nur Verschlüsselung: In diesem Modus werden alle Daten verschlüsselt, die zwischen dem Client und dem Server übertragen werden. Es wird keine Zertifikats- oder Hostname-Validierung durchgeführt.
- Dieser Modus bietet ein gewisses Maß an Sicherheit, da Daten während der Übertragung geschützt werden. Er kann jedoch anfällig für PITM-Angriffe sein.
- Verwenden Sie diesen Modus, wenn Sie sicherstellen müssen, dass alle Daten verschlüsselt sind, die Identität des Servers aber nicht überprüfen können oder möchten. Wir empfehlen, diesen Modus bei der Arbeit mit privaten VPCs zu verwenden.
- Keine Verschlüsselung oder Bestätigung: In diesem Modus werden keine Daten verschlüsselt und es werden keine Zertifikats- oder Hostname-Bestätigungen durchgeführt. Alle Daten werden als Nur-Text gesendet.
- Wir empfehlen, diesen Modus nicht in einer Umgebung zu verwenden, in der vertrauliche Daten verarbeitet werden.
- Wir empfehlen, diesen Modus nur zu Testzwecken in einem isolierten Netzwerk zu verwenden, in dem Sicherheit kein Problem darstellt.
Vertrauenswürdiges Serverzertifikat (PEM)
Wenn Sie den Modus Daten verschlüsseln und CA und Hostname bestätigen oder Daten verschlüsseln und CA bestätigen verwenden, können Sie auch ein oder mehrere PEM-codierte Zertifikate angeben. Diese Zertifikate sind in einigen Szenarien erforderlich, in denen der BigQuery Data Transfer Service die Identität Ihres Datenbankservers während der TLS-Verbindung bestätigen muss:
- Wenn Sie ein Zertifikat verwenden, das von einer privaten Zertifizierungsstelle in Ihrer Organisation signiert wurde, oder ein selbst signiertes Zertifikat, müssen Sie die vollständige Zertifikatskette oder das einzelne selbst signierte Zertifikat angeben. Dies ist für Zertifikate erforderlich, die von internen Zertifizierungsstellen verwalteter Cloud-Anbieterdienste wie Amazon Relational Database Service (RDS) ausgestellt werden.
- Wenn das Zertifikat Ihres Datenbankservers von einer öffentlichen Zertifizierungsstelle signiert wurde (z. B. Let's Encrypt, DigiCert oder GlobalSign), müssen Sie kein Zertifikat angeben. Die Stammzertifikate für diese öffentlichen Zertifizierungsstellen sind vorinstalliert und werden vom BigQuery Data Transfer Service als vertrauenswürdig eingestuft.
Sie können PEM-codierte Zertifikate im Feld Vertrauenswürdiges PEM-Zertifikat angeben, wenn Sie eine Microsoft SQL Server-Übertragungskonfiguration erstellen. Dabei gelten die folgenden Anforderungen:
- Das Zertifikat muss eine gültige PEM-codierte Zertifikatskette sein.
- Das Zertifikat muss vollständig korrekt sein. Fehlende Zertifikate in der Kette oder falsche Inhalte führen dazu, dass die TLS-Verbindung fehlschlägt.
- Für ein einzelnes Zertifikat können Sie ein einzelnes, selbst signiertes Zertifikat vom Datenbankserver bereitstellen.
- Für eine vollständige Zertifikatskette, die von einer privaten Zertifizierungsstelle ausgestellt wurde, müssen Sie die vollständige Vertrauenskette angeben. Dazu gehören das Zertifikat des Datenbankservers sowie alle Zwischen- und Stammzertifikate der Zertifizierungsstelle.
Hinweise
Bevor Sie eine Microsoft SQL Server-Datenübertragung planen können, müssen Sie die folgenden Voraussetzungen erfüllen.
Voraussetzungen für Microsoft SQL Server
Sie müssen ein Nutzerkonto in der Microsoft SQL Server-Datenbank erstellt haben. Weitere Informationen finden Sie unter Nutzer mit Anmeldedaten erstellen.
Voraussetzungen für BigQuery
- Überprüfen Sie, ob Sie alle erforderlichen Aktionen ausgeführt haben, damit Sie den BigQuery Data Transfer Service aktivieren können.
- Erstellen Sie ein BigQuery-Dataset zum Speichern Ihrer Daten.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery-Administrator (roles/bigquery.admin) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen einer Microsoft SQL Server-Datenübertragung benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen einer Microsoft SQL Server-Datenübertragung erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Erstellen einer Microsoft SQL Server-Datenübertragung erforderlich:
-
bigquery.transfers.update -
bigquery.datasets.get
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Netzwerkkonfiguration
Sie müssen bestimmte Netzwerkkonfigurationen einrichten, wenn für die Microsoft SQL Server-Datenbankverbindung keine öffentliche IP-Adresse verfügbar ist. Weitere Informationen finden Sie in den folgenden Abschnitten:
- Verbindung zur Google Cloud -Instanz konfigurieren
- Verbindung zu AWS konfigurieren
- Verbindung zu Azure konfigurieren
Microsoft SQL Server-Datenübertragung einrichten
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite Datenübertragungen auf.
Klicken Sie auf Übertragung erstellen.
Wählen Sie im Abschnitt Quelltyp als Quelle die Option Microsoft SQL Server aus.
Führen Sie im Abschnitt Details zur Datenquelle folgende Schritte aus:
- Wählen Sie unter Netzwerkanhang einen vorhandenen Netzwerkanhang aus oder klicken Sie auf Netzwerkanhang erstellen.
- Geben Sie unter Host den Hostnamen oder die IP-Adresse der Microsoft SQL Server-Datenbank ein.
- Geben Sie als Portnummer die Portnummer für die Microsoft SQL Server-Datenbank ein.
- Geben Sie unter Datenbankname den Namen der Microsoft SQL Server-Datenbank ein.
- Geben Sie für Nutzername den Nutzernamen des Microsoft SQL Server-Nutzers ein, der die Verbindung zur Microsoft SQL Server-Datenbank herstellt.
- Geben Sie für Kennwort das Passwort des Microsoft SQL Server-Nutzers ein, der die Verbindung zur Microsoft SQL Server-Datenbank herstellt.
- Wählen Sie für TLS-Modus eine Option aus dem Menü aus. Weitere Informationen zu TLS-Modi finden Sie unter TLS-Konfiguration.
- Geben Sie für Trusted PEM Certificate (Vertrauenswürdiges PEM-Zertifikat) das öffentliche Zertifikat der Zertifizierungsstelle ein, die das TLS-Zertifikat des Datenbankservers ausgestellt hat. Weitere Informationen finden Sie unter Vertrauenswürdiges Serverzertifikat (PEM).
- Klicken Sie unter Zu übertragende Microsoft SQL Server-Objekte auf die Microsoft SQL Server-Tabelle oder geben Sie die Namen der für die Übertragung erforderlichen Tabellen manuell ein.
Wählen Sie im Abschnitt Zieleinstellungen für Dataset das Dataset aus, das Sie zum Speichern Ihrer Daten erstellt haben, oder klicken Sie auf Neues Dataset erstellen, um ein Dataset zu erstellen, das als Ziel-Dataset verwendet werden soll.
Geben Sie im Abschnitt Konfigurationsname für Übertragung für Anzeigename einen Namen für die Übertragung ein. Der Name kann ein beliebiger Wert sein, anhand dessen Sie die Übertragung identifizieren können, falls Sie sie später ändern müssen.
Führen Sie im Abschnitt Zeitplanoptionen folgende Schritte aus:
- Wählen Sie eine Wiederholungshäufigkeit aus. Wenn Sie die Option Stunden, Tage (Standard), Wochen oder Monate auswählen, müssen Sie auch eine Häufigkeit angeben. Sie können auch die Option Benutzerdefiniert auswählen, um eine genauere Wiederholungshäufigkeit festzulegen. Wenn Sie die Option On-Demand auswählen, wird diese Datenübertragung nur ausgeführt, wenn Sie die Übertragung manuell auslösen.
- Wählen Sie gegebenenfalls die Option Jetzt starten oder Zu festgelegter Zeit starten aus und geben Sie ein Startdatum und eine Laufzeit an.
Optional: Gehen Sie im Abschnitt Benachrichtigungsoptionen so vor:
- Klicken Sie zum Aktivieren von E‑Mail-Benachrichtigungen auf die Ein/Aus-Schaltfläche E‑Mail-Benachrichtigungen. Wenn Sie diese Option aktivieren, erhält der Übertragungsadministrator eine E‑Mail-Benachrichtigung, falls ein Übertragungsvorgang fehlschlägt.
- Klicken Sie auf die Ein/Aus-Schaltfläche Pub/Sub-Benachrichtigungen, um Pub/Sub-Ausführungsbenachrichtigungen für Ihre Übertragung zu konfigurieren. Sie können den Namen für das Thema auswählen oder auf Thema erstellen klicken, um eines zu erstellen.
Optional: Wählen Sie im Abschnitt Erweiterte Optionen einen Verschlüsselungstyp für diese Übertragung aus. Sie können entweder einen Google-owned and Google-managed encryption keyoder einen vom Kunden verwalteten Cloud Key Management Service-Schlüssel auswählen. Weitere Informationen zu Verschlüsselungsschlüsseln finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).
Klicken Sie auf Speichern.
bq
Geben Sie den Befehl bq mk ein und geben Sie das Flag --transfer_config für die Übertragungserstellung an:
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --params='PARAMETERS'
Ersetzen Sie Folgendes:
PROJECT_ID(optional): Ihre Google Cloud Projekt-ID. Wenn das Flag--project_idnicht bereitgestellt wird, um ein bestimmtes Projekt anzugeben, wird das Standardprojekt verwendet.DATA_SOURCE: Die Datenquelle, diesqlserverist.DISPLAY_NAME: Der Anzeigename für die Datenübertragungskonfiguration. Der Übertragungsname kann ein beliebiger Wert sein, mit dem Sie die Übertragung identifizieren können, wenn Sie sie später ändern müssen.DATASET: Das Ziel-Dataset für die Datenübertragungskonfiguration.PARAMETERS: die Parameter für die erstellte Übertragungskonfiguration im JSON-Format. Beispiel:--params='{"param":"param_value"}'. Im Folgenden finden Sie die Parameter für eine Microsoft SQL Server-Übertragung:connector.networkAttachment(optional): Name des Netzwerkanhangs, der eine Verbindung zur Microsoft SQL Server-Datenbank herstellen soll.connector.database: Der Name der Microsoft SQL Server-Datenbank.connector.endpoint.host: der Hostname oder die IP-Adresse der Datenbank.connector.endpoint.port: die Portnummer der Datenbank.connector.authentication.username: Der Nutzername des Datenbanknutzers.connector.authentication.password: Das Passwort des Datenbanknutzers.connector.tls.mode: Geben Sie eine TLS-Konfiguration an, die für diese Übertragung verwendet werden soll:ENCRYPT_VERIFY_CA_AND_HOSTzum Verschlüsseln von Daten und Überprüfen von Zertifizierungsstelle und HostnameENCRYPT_VERIFY_CAzum Verschlüsseln von Daten und zum Überprüfen der ZertifizierungsstelleENCRYPT_VERIFY_NONEnur für die DatenverschlüsselungDISABLEfür keine Verschlüsselung oder Bestätigung
connector.tls.trustedServerCertificate: (optional) Geben Sie ein oder mehrere PEM-codierte Zertifikate an. Nur erforderlich, wenn der Wert vonconnector.tls.modeENCRYPT_VERIFY_CA_AND_HOSToderENCRYPT_VERIFY_CAist.assets: Eine Liste der Namen der Microsoft SQL Server-Tabellen, die im Rahmen der Übertragung aus der Microsoft SQL Server-Datenbank übertragen werden sollen.
Mit dem folgenden Befehl wird beispielsweise ein Microsoft SQL Server-Übertrag namens My Transfer erstellt:
bq mk \ --transfer_config --target_dataset=mydataset --data_source=sqlserver --display_name='My Transfer' --params='{"assets":["db1/dbo/Department","db1/dbo/Employees"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.database":"DB1", "connector.endpoint.host":"192.168.0.1", "connector.endpoint.port":"1520", "connector.networkAttachment":"projects/dev-project1/regions/us-central1/networkattachments/na1", "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'
Wenn Sie eine Datenübertragung manuell außerhalb des regulären Zeitplans ausführen möchten, können Sie einen Backfill-Vorgang starten.
Datentypzuordnung
In der folgenden Tabelle werden Microsoft SQL Server-Datentypen den entsprechenden BigQuery-Datentypen zugeordnet:
| Microsoft SQL Server-Datentyp | BigQuery-Datentyp |
|---|---|
tinyint |
INTEGER |
smallint |
INTEGER |
int |
INTEGER |
bigint |
BIGNUMERIC |
bit |
BOOLEAN |
decimal |
BIGNUMERIC |
numeric |
NUMERIC |
money |
BIGNUMERIC |
smallmoney |
BIGNUMERIC |
float |
FLOAT |
real |
FLOAT |
date |
DATE |
time |
TIME |
datetime2 |
TIMESTAMP |
datetimeoffset |
TIMESTAMP |
datetime |
TIMESTAMP |
smalldatetime |
TIMESTAMP |
char |
STRING |
varchar |
STRING |
text |
STRING |
nchar |
STRING |
nvarchar |
STRING |
ntext |
STRING |
binary |
BYTES |
varbinary |
BYTES |
image |
BYTES |
geography |
STRING |
geometry |
STRING |
hierarchyid |
BYTES |
rowversion |
BYTES |
sql_variant |
BYTES |
uniqueidentifier |
STRING |
xml |
STRING |
json |
STRING |
vector |
STRING |
Die Datentypen json und vector werden nur in Azure unterstützt.
Der JSON-Datentyp wird in Azure SQL-Datenbanken und verwalteten Azure SQL-Instanzen unterstützt, die mit der Update-Richtlinie „Immer aktuell“ konfiguriert sind. Der JSON-Datentyp wird in verwalteten Azure SQL-Instanzen, die mit der Microsoft SQL Server 2022-Aktualisierungsrichtlinie konfiguriert sind, nicht unterstützt.
In Microsoft SQL Server wird JSON als NVARCHAR(MAX) und nicht als JSON-Typ gespeichert. Wir empfehlen, CHECK (ISJSON(json_col) = 1) für die Validierung und JSON_VALUE() für Abfragen zu verwenden.
Microsoft SQL Server unterstützt keine Vektoren für den Datentyp vector. Wir empfehlen, Vektoren als JSON-Arrays in NVARCHAR(MAX) zu speichern und JSON_VALUE() für die Extraktion zu verwenden. Die Ähnlichkeit sollte manuell mit FLOAT berechnet werden.
Fehlerbehebung
Informationen zur Fehlerbehebung bei Datenübertragungen finden Sie unter Microsoft SQL Server-Übertragungsprobleme.
Preise
Während sich dieses Feature in der Vorschau befindet, fallen keine Kosten für die Übertragung von Microsoft SQL Server-Daten in BigQuery an.
Nächste Schritte
- Eine Übersicht über den BigQuery Data Transfer Service finden Sie unter Was ist BigQuery Data Transfer Service?.
- Informationen zum Verwenden von Übertragungen, einschließlich des Abrufs von Informationen zu einer Übertragungskonfiguration, des Auflistens von Übertragungskonfigurationen und des Aufrufs des Ausführungsverlaufs der Übertragung finden Sie unter Übertragungen verwalten.