Daten mithilfe von Sicherungsdateien zwischen SQL Server 2017 und Cloud SQL for SQL Server migrieren


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.

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:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Storage, Cloud SQL Admin, and Compute Engine APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Storage, Cloud SQL Admin, and Compute Engine APIs.

    Enable the APIs

  8. In the Google Cloud console, activate Cloud Shell.

    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.

  1. 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 namens MarylandZipCodes. Dann lädt das Skript die öffentliche Registry für Postleitzahlen von Maryland herunter und importiert die Registry in die Tabelle.

  2. 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

  1. 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 Standardpasswort sqlserver12@. In dieser Anleitung erstellen Sie die Instanz in der Zone us-central1-f. Weitere Informationen zu Zonen erhalten Sie unter Cloud-Standorte.

  2. 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.

  1. 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.

  2. Installieren Sie einen RDP-Client (Remote Desktop Protocol). Weitere Informationen finden Sie unter Microsoft Remote Desktop-Clients.

  3. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    ZUR SEITE "VM-INSTANZEN"

  4. Klicken Sie im Bereich Compute Engine der Google Cloud Console auf das Drop-down-Menü RDP und wählen Sie die Option RDP 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.

  5. Minimieren Sie im Browser alle Fenster und starten Sie dann das PowerShell-Befehlszeilentool.

  6. Erstellen Sie einen Sicherungsordner:

    mkdir c:\backup
    
  7. Erstellen Sie im Browser im Sicherungsordner eine Sicherung der Datenbank:

    osql -E -Q "BACKUP DATABASE testdb TO DISK='c:\backup\testdb.bak'"
    
  8. 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

  1. 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.

  2. 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
    
  3. 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
    
  4. 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.

  1. 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.

  2. 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
    
  3. Starten Sie den Cloud SQL-Proxy:

    CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)')
    ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
    
  4. 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 Ergebnis 619 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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Nächste Schritte