In dieser Anleitung migrieren Sie Daten von SQL Server 2017 Enterprise, das auf Compute Engine ausgeführt wird, zu Cloud SQL for SQL Server 2017 Enterprise. Sie erfahren hier, wie Sie Daten aus SQL Server 2017 exportieren, die Daten in Cloud SQL for SQL Server 2017 importieren und prüfen, ob die Daten erfolgreich importiert wurden.
Informationen zum Migrieren von Daten aus SQL Server 2008 finden Sie unter Daten mithilfe von Sicherungsdateien zwischen SQL Server 2008 und Cloud SQL for SQL Server migrieren.
Diese Anleitung ist hilfreich, wenn Sie ein Systemadministrator, Entwickler, Datenbankadministrator oder DevOps-Entwickler sind, der Daten vom SQL Server 2017 zu Cloud SQL for SQL Server migrieren möchte.
In dieser Anleitung wird vorausgesetzt, dass Sie mit Folgendem vertraut sind.
- Microsoft SQL Server
- Microsoft PowerShell
- Compute Engine
- Cloud Storage
- Cloud SQL
Ziele
- SQL Server-VM-Instanz in Compute Engine erstellen, um die Beispieldatenbank zu hosten.
- Cloud SQL for SQL Server-Instanz erstellen
- Cloud Storage-Bucket erstellen
- Beispieldatenbank sichern
- Datenbank in Cloud SQL for SQL Server importieren
- Importierte Daten validieren
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Compute Engine
- Cloud SQL
- Cloud Storage
- SQL Server (premium with Compute Engine)
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Vorbereitung
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Storage, Cloud SQL Admin, and Compute Engine APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Storage, Cloud SQL Admin, and Compute Engine APIs.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Skript für eine Beispieldatenbank erstellen
In diesem Abschnitt erstellen Sie ein Skript, um eine vorab geladene Beispieldatenbank auszufüllen. Dann erstellen Sie eine SQL Server 2017-Instanz in Compute Engine, die diese Datenbank verwendet.
Erstellen Sie in Cloud Shell ein PowerShell-Skript, das als Startskript bereitgestellt werden soll:
cat << 'EOF' > startup.ps1 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $dataseturl = "https://opendata.maryland.gov/api/views/ryxx-aeaf/rows.csv?accessType=DOWNLOAD" Invoke-WebRequest -Uri $dataseturl -OutFile c:\dataset.csv Invoke-Sqlcmd -Query "CREATE DATABASE testdb;" Invoke-Sqlcmd -Query "CREATE TABLE testdb.dbo.MarylandZipCodes ( zipcode int NOT NULL PRIMARY KEY, city varchar(255), county varchar(255))" Invoke-Sqlcmd -Query "BULK INSERT testdb.dbo.MarylandZipCodes FROM 'c:\dataset.csv' WITH (DATAFILETYPE='char',FIELDTERMINATOR=',' ,ROWTERMINATOR = '0x0a', FIRSTROW=2);" EOF
Dieses Startskript erstellt eine lokale Datenbank namens
testdb
mit einer Tabelle namensMarylandZipCodes
. Dann lädt das Skript die öffentliche Registry für Postleitzahlen von Maryland herunter und importiert die Registry in die Tabelle.Erstellen Sie eine SQL Server 2017 Enterprise-Instanz für Windows Server 2016:
gcloud compute instances create sql-server --machine-type n1-highmem-4 \ --boot-disk-size 50GB \ --image-project windows-sql-cloud --image-family sql-ent-2017-win-2016 \ --zone us-central1-f \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --metadata-from-file windows-startup-script-ps1=startup.ps1
Für diese Anleitung erstellen Sie die Instanz in der Zone
us-central1-f
mit einem 50 GB großen Bootlaufwerk. Weitere Informationen zu Zonen erhalten Sie unter Cloudstandorte. Das Flag--metadata-from-file
legt das PowerShell-Skript als Startskript für die Instanz fest.
Cloud SQL-Instanz und Cloud Storage-Bucket erstellen
Erstellen Sie in Cloud Shell die Cloud SQL for SQL Server 2017 Enterprise-Instanz, zu der Sie später die Datenbank migrieren:
gcloud beta sql instances create target \ --database-version=SQLSERVER_2017_ENTERPRISE \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --zone=us-central1-f
Es kann einige Minuten dauern, bis die Instanz erstellt ist. Der standardmäßige Root-Nutzername lautet
sqlserver
und das Standardpasswortsqlserver12@
. In dieser Anleitung erstellen Sie die Instanz in der Zoneus-central1-f
. Weitere Informationen zu Zonen erhalten Sie unter Cloud-Standorte.Erstellen Sie einen Cloud Storage-Bucket, um die Sicherungsdatei zu speichern, bevor die Daten in Cloud SQL importiert werden:
gcloud storage buckets create "gs://${DEVSHELL_PROJECT_ID}-sql-backups" --location=US
Die Beispieldatenbank sichern
In diesem Abschnitt stellen Sie eine Verbindung zur virtuellen SQL Server-Maschine (VM) her, erstellen eine Sicherung der Datenbank und laden diese in Cloud Storage hoch.
Setzen Sie in Cloud Shell das Passwort für die SQL Server-VM-Instanz zurück:
gcloud compute reset-windows-password sql-server --zone=us-central1-f
Notieren Sie sich das neue Passwort für den Nutzer.
Installieren Sie einen RDP-Client (Remote Desktop Protocol). Weitere Informationen finden Sie unter Microsoft Remote Desktop-Clients.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie im Bereich Compute Engine der Google Cloud Console auf das Drop-down-Menü RDP und wählen Sie die Option RDP-Datei herunterladen aus, um die RDP-Datei für die SQL Server-VM-Instanz herunterzuladen.
Stellen Sie mithilfe dieser Datei die Verbindung zur Instanz mithilfe eines RDP-Clients her. Weitere Informationen finden Sie unter Microsoft Remote Desktop-Clients.
Minimieren Sie im Browser alle Fenster und starten Sie dann das PowerShell-Befehlszeilentool.
Erstellen Sie einen Sicherungsordner:
mkdir c:\backup
Erstellen Sie im Browser im Sicherungsordner eine Sicherung der Datenbank:
osql -E -Q "BACKUP DATABASE testdb TO DISK='c:\backup\testdb.bak'"
Kopieren Sie in der Shell in der Instanz die Sicherungsdatei in den Cloud Storage-Bucket:
$PROJECT_ID=(gcloud config get-value core/project) gcloud storage cp c:\backup\testdb.bak gs://$PROJECT_ID-sql-backups --no-clobber
Sicherungsdatei in Cloud SQL importieren
Rufen Sie in Cloud Shell den Namen des der Cloud SQL-Instanz zugeordneten Dienstkontos ab und speichern Sie diesen in einer Variable:
SVC_EMAIL_ADDRESS=$(gcloud sql instances describe target \ --format='value(serviceAccountEmailAddress)') echo $SVC_EMAIL_ADDRESS
Google Cloud hat beim Erstellen der Cloud SQL-Instanz ein Dienstkonto erstellt. Sie verwenden das Dienstkonto, um der Cloud SQL-Instanz Zugriff auf die erforderlichen Ressourcen zu gewähren.
Gewähren Sie dem Dienstkonto die Berechtigung zum Schreiben in den Cloud Storage-Bucket:
gcloud storage buckets add-iam-policy-binding gs://${DEVSHELL_PROJECT_ID}-sql-backups \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyBucketWriter
Gewähren Sie dem Dienstkonto die Berechtigung zum Lesen von Dateien im Cloud Storage-Bucket:
gcloud storage buckets add-iam-policy-binding gs://${DEVSHELL_PROJECT_ID}-sql-backups/testdb.bak \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyObjectReader
Importieren Sie die Sicherungsdatei in die Cloud SQL-Datenbank:
gcloud beta sql import bak target \ gs://${DEVSHELL_PROJECT_ID}-sql-backups/testdb.bak --database testdb
Datenimport validieren
In diesem Abschnitt prüfen Sie, ob die Beispieldaten erfolgreich importiert wurden.
Installieren Sie in Cloud Shell das SQL Server-Toolkit:
sudo apt-get install -y mssql-tools
Wenn Sie den Lizenzbedingungen zustimmen, geben Sie
yes
ein, wenn Sie dazu aufgefordert werden.Um sicher auf die Cloud SQL-Instanz zuzugreifen, laden Sie den Cloud SQL-Proxy herunter:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
Starten Sie den Cloud SQL-Proxy:
CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)') ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
Lesen Sie die Anzahl der Zeilen in der Cloud SQL-Tabelle:
/opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q "select count(*) from testdb.dbo.MarylandZipCodes"
Wenn Sie dazu aufgefordert werden, geben Sie das Passwort
sqlserver12@
ein. Achten Sie in der Ausgabe darauf, dass das Ergebnis619
ist.
Bereinigen
Am einfachsten können Sie die Abrechnung deaktivieren, wenn Sie das Google Cloud-Projekt löschen, das Sie für die Anleitung erstellt haben.Projekt löschen
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Weitere Informationen über vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK) für Cloud SQL for SQL Server.
- Weitere Informationen über das Konfigurieren einer privaten IP-Verbindung für Cloud SQL for SQL Server.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center