Microsoft SQL Server-Datenbank in Compute Engine klonen


In dieser Anleitung werden zwei Möglichkeiten zum Klonen einer in Compute Engine ausgeführten Microsoft SQL Server-Datenbank beschrieben. Bei der einen werden Snapshots nichtflüchtiger Speicher verwendet. Bei der anderen Methode wird die Sicherung und Wiederherstellung des nativen SQL-Servers verwendet und die Datensicherung mithilfe von Cloud Storage übertragen. Cloud Storage ist der Objektspeicherdienst von Google Cloud. Dieser bietet eine unkomplizierte, sichere, langlebige und hochverfügbare Möglichkeit zum Speichern von Dateien.

Beim Klonen wird eine Online-Datenbank auf einen anderen Server kopiert. Die Kopie ist von der vorhandenen Datenbank unabhängig und wird als Snapshot zu einem bestimmten Zeitpunkt gespeichert. Sie können eine geklonte Datenbank für verschiedene Zwecke verwenden, ohne den Produktionsserver zu belasten oder die Integrität der Produktionsdaten zu gefährden. Zu diesen Zwecken gehören:

  • Analytische Abfragen durchführen
  • Lasttests oder Integrationstests Ihrer Anwendungen
  • Datenextraktion zum Befüllen von Data Warehouses
  • Tests mit den Daten ausführen

Beide in dieser Anleitung beschriebenen Methoden zum Klonen haben ihre Vor- und Nachteile. Die ideale Methode ist von der jeweiligen Situation abhängig. In der folgenden Tabelle sind einige grundlegende Merkmale aufgeführt.

Problem Methode 1: Laufwerk-Snapshots Methode 2: Sichern und Wiederherstellen mit Cloud Storage
Zusätzlicher Speicherplatz auf SQL Server-Instanzen erforderlich Kein zusätzlicher Speicherplatz erforderlich Zusätzlicher Speicherplatz zum Speichern der Sicherungsdatei beim Erstellen und Wiederherstellen erforderlich
Zusätzliche Belastung der SQL Server-Quellinstanzen während des Klonens Keine zusätzliche Belastung Zusätzliche Belastung der CPU und E/A beim Erstellen und Hochladen von Sicherungsdateien
Dauer des Klonens Relativ schnell bei großen Datenbanken Relativ langsam bei großen Datenbanken
Kann aus SQL Server-Instanzen außerhalb von Google Cloud klonen Nein "Ja"
Komplexität Eine komplexe Abfolge von Befehlen zum Anhängen von geklonten Laufwerken Ein relativ einfacher Befehlssatz zum Klonen
Kann vorhandene Sicherungssysteme nutzen Ja, wenn das Sicherungssystem Laufwerk-Snapshots von Google Cloud verwendet Ja, wenn das Sicherungssystem native SQL Server-Sicherungsdateien in Cloud Storage schreibt
Granularität des Klonens Kann nur ganze Laufwerke klonen Kann nur die angegebene Datenbank klonen
Datenkonsistenz Konsistent zum Zeitpunkt des Snapshots Konsistent zum Zeitpunkt der Datensicherung

In dieser Anleitung wird davon ausgegangen, dass Sie mit der Systemverwaltung von Microsoft Windows, PowerShell und Microsoft SQL Server mit Microsoft SQL Server Management Studio vertraut sind.

Ziele

  • Informationen zum Ausführen einer SQL Server-Instanz in Google Cloud
  • Demodatenbank auf einem sekundären Laufwerk erstellen
  • Erfahren Sie, wie Sie eine SQL Server-Datenbank mit Compute Engine-Laufwerk-Snapshots klonen.
  • Erfahren Sie, wie Sie eine SQL Server-Datenbank durch Übertragen einer Sicherung mit Cloud Storage klonen.

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. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. Aktivieren Sie die Compute Engine API.
  7. API aktivieren

Diese zusätzlichen Voraussetzungen müssen erfüllt sein:

  • Sie verwenden den Browser Google Chrome.
  • Installieren Sie einen RDP-Client (Remote Desktop Protocol) Ihrer Wahl. Weitere Informationen finden Sie unter Microsoft Remote Desktop-Clients. Wenn Sie bereits einen RDP-Client installiert haben, können Sie diese Aufgabe überspringen.

Umgebung einrichten

Für diese Anleitung brauchen Sie in Ihrer Computing-Umgebung Folgendes:

  • Eine SQL Server-Instanz in Compute Engine mit dem Namen sql-server-prod zur Darstellung Ihres Produktionsdatenbankservers.
  • Ein zusätzliches Laufwerk mit dem Namen sql-server-prod-data zum Speichern Ihrer Produktionsdatenbank, das an den Produktionsserver angehängt ist.
  • Eine Kopie der Beispieldatenbank für SQL Server "Wide World Importers" zum Simulieren der Produktionsdatenbank, die Sie klonen möchten.
  • Eine SQL Server-Instanz in Compute Engine mit dem Namen sql-server-test, die den Testdatenbankserver darstellt. Auf diesem Server klonen Sie die Datenbank.

Diese Architektur wird im folgenden Diagramm veranschaulicht.

Diagramm, das die Einrichtung zum Klonen einer SQL Server-Datenbank in dieser Anleitung zeigt.

Produktions-VM-Instanz erstellen

Richten Sie eine Compute Engine-VM-Instanz ein, auf der SQL Server auf Windows Server ausgeführt wird, um eine Produktionsumgebung zu simulieren.

Die VM-Instanz für diese Anleitung verwendet zwei Laufwerke: ein 50-GB-Laufwerk für das Betriebssystem und die Nutzerkonten und ein 100-GB-Laufwerk für den Datenbankspeicher.

In Compute Engine bietet die Verwendung separater Laufwerke keine Leistungsvorteile. Die Leistung von Laufwerken wird durch die Gesamtspeicherkapazität aller Laufwerke bestimmt, die an eine Instanz angehängt sind, sowie durch die Gesamtzahl der vCPUs auf Ihrer VM-Instanz. Daher können sich die Datenbank und die Logdatei auf demselben Laufwerk befinden.

Console

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

    Zur Seite „VM-Instanzen"

  2. Klicken Sie auf Erstellen.

  3. Geben Sie im Feld Name den Wert sql-server-prod ein.

  4. Wählen Sie für Region die Option us-east1 aus.

  5. Wählen Sie als Zone us-east1-b aus.

  6. Ändern Sie unter Maschinenkonfiguration den Maschinentyp in n1-standard-2 (2 vCPUs).

  7. Klicken Sie neben der Beschreibung Bootlaufwerk auf Ändern.

  8. Klicken Sie im Bereich Bootlaufwerk auf den Tab Öffentliche Images.

  9. Wählen Sie in der Drop-down-Liste Betriebssystem die Option SQL Server auf Windows Server aus.

  10. Wählen Sie in der Drop-down-Liste Version SQL Server 2022 Standard auf Windows Server 2022 Datacenter aus.

  11. Folgende Werte müssen festgelegt sein:

    • Bootlaufwerktyp ist auf Nichtflüchtiger Standardspeicher eingestellt.
    • Größe (GB) ist auf 50 festgelegt.
  12. Klicken Sie auf Auswählen.

  13. Legen Sie unter Identität und API-Zugriff die Option Zugriffsbereiche auf Uneingeschränkten Zugriff auf alle Cloud APIs zulassen fest.

  14. Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten.

  15. Klicken Sie auf den Tab Laufwerke.

  16. Klicken Sie auf Neues Laufwerk hinzufügen .

  17. Geben Sie im Feld Name den Wert sql-server-prod-data ein.

  18. Geben Sie im Feld Größe (GB) den Wert 100 ein.

  19. Klicken Sie auf Fertig.

  20. Klicken Sie auf Erstellen.

Cloud Shell

  1. Cloud Shell öffnen

    Cloud Shell öffnen

  2. Initialisieren Sie die folgenden Variablen:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Wobei:

    • VPC_NAME: Der Name Ihrer VPC
    • SUBNET_NAME: Der Name Ihres Subnetzes
  3. Legen Sie Ihre standardmäßige Projekt-ID fest:

    gcloud config set project PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.

  4. Legen Sie Ihre Standardregion fest:

    gcloud config set compute/region REGION
    

    Ersetzen Sie REGION durch die ID der Region, in der die Bereitstellung erfolgen soll.

  5. Legen Sie Ihre Standardzone fest:

    gcloud config set compute/zone ZONE
    

    Ersetzen Sie ZONE durch die ID der Zone, in der die Bereitstellung erfolgen soll.

  6. Erstellen Sie eine Compute Engine-Instanz. Verwenden Sie dazu das Anwendungs-Image für SQL Server 2022 Standard auf Windows Server 2022 Datacenter:

    REGION=$(gcloud config get-value compute/region)
    ZONE=$(gcloud config get-value compute/zone)
    
    gcloud compute instances create sql-server-prod \
        --machine-type=n1-standard-2 \
        --scopes=cloud-platform \
        --image-family=sql-std-2022-win-2022 \
        --image-project=windows-sql-cloud \
        --boot-disk-size=50GB \
        --boot-disk-device-name=sql-server-prod \
        --create-disk="mode=rw,size=100,type=pd-standard,name=sql-server-prod-data,device-name=sql-server-prod-data" \
        --subnet=$SUBNET_NAME
    

    Dieser Befehl gewährt der Instanz uneingeschränkten Zugriff auf Google Cloud APIs, erstellt ein sekundäres Laufwerk mit 100 GB und hängt das Laufwerk an die Instanz an. Ignorieren Sie die Warnung zur Laufwerksleistung, da Sie für diese Anleitung keine hohe Leistung benötigen.

Verbindung zur VM-Instanz herstellen

  1. Öffnen Sie in der Google Cloud Console die Seite VM-Instanzen.

    Zur Seite "VM-Instanzen"

  2. Warten Sie etwa fünf Minuten, bis die VM-Instanz bereit ist.

    Sie können den Initialisierungsprozess der VM überwachen. Rufen Sie dazu die Ausgabe des seriellen Ports in Cloud Shell auf:

    gcloud compute instances tail-serial-port-output sql-server-prod
    

    Wenn die folgende Meldung angezeigt wird, ist die Initialisierung abgeschlossen.

    Instance setup finished. sql-server-prod is ready to use.
    

    Drücken Sie Strg+C, um das Monitoring des seriellen Ports zu beenden.

  3. Klicken Sie auf den Instanznamen sql-server-prod, um die Seite mit den VM-Instanzdetails zu öffnen.

  4. Klicken Sie unter Remotezugriff auf Windows-Passwort festlegen und dann auf Festlegen, um Ihr Konto auf dem Remotemaschine zu erstellen.

    Mit diesem Schritt wird ein Passwort für Sie erstellt. Notieren Sie sich das Passwort oder kopieren Sie es in eine sichere, temporäre Datei.

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

  6. Wenn Sie dazu aufgefordert werden, geben Sie das soeben erstellte Passwort ein und klicken Sie auf OK.

  7. Klicken Sie auf Weiter, um das Serverzertifikat anzunehmen und sich bei der Remote-Windows-Instanz anzumelden.

  8. Wenn Sie gefragt werden, ob Ihr Computer von anderen PCs und Geräten im Netzwerk gefunden werden soll, klicken Sie auf Nein.

Zusätzliches Laufwerk einrichten

Das zweite Laufwerk, das an die Produktionsinstanz angehängt ist, dient zum Speichern der Produktionsdatenbank. Dieses Laufwerk ist leer, daher müssen Sie es partitionieren, formatieren und bereitstellen.

  1. Klicken Sie in einer RDP-Sitzung, die mit Ihrer Instanz sql-server-prod verbunden ist, auf der Windows-Taskleiste auf die Schaltfläche Start und geben Sie diskpart ein. Klicken Sie dann auf diskpart, um DiskPart zu öffnen.
  2. Wenn Sie gefragt werden, ob die Anwendung Änderungen vornehmen darf, klicken Sie auf Ja.
  3. Rufen Sie eine Liste der mit Ihrer Instanz verbundenen Laufwerke auf:

    list disk
    

    Die Ausgabe sieht so aus:

    Disk ###  Status         Size     Free     Dyn  Gpt
    --------  -------------  -------  -------  ---  ---
    Disk 0    Online           50 GB      0 B
    Disk 1    Online          100 GB   100 GB
    

    Laufwerk 1 (100 GB) ist Ihr Datenlaufwerk.

  4. Wählen Sie das Datenlaufwerk aus:

    select disk 1
    
  5. Initialisieren Sie das Laufwerk:

    clean
    
  6. Erstellen Sie eine GUID-Partitionstabelle:

    convert gpt
    
  7. Erstellen Sie die Datenpartition mit dem gesamten Laufwerk:

    create partition primary
    
  8. Liste der verfügbaren Volumes:

    list volume
    

    Die Ausgabe sieht so aus:

    Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
    ----------  ---  -----------  -----  ----------  -------  ---------  --------
    Volume 0     C                NTFS   Partition     49 GB  Healthy    Boot
    Volume 1                      FAT32  Partition    100 MB  Healthy    System
    Volume 2                      RAW    Partition     99 GB  Healthy
    

    Volume 2 (99 GB) ist Ihr Datenlaufwerk.

  9. Wählen Sie das Volume aus:

    select volume 2
    
  10. Formatieren Sie die Partition mit dem NTFS-Dateisystem und kennzeichnen Sie sie mit data:

    format quick fs=ntfs label=data
    
  11. Stellen Sie das Laufwerk als Laufwerk D bereit:

    assign letter=d
    
  12. Beenden Sie DiskPart:

    exit
    

Beispieldatenbank herunterladen

So richten Sie Ihre Umgebung für die Klonenübung ein:

  • Erstellen Sie eine Verzeichnisstruktur auf Laufwerk D (data), um Ihre Datenbank zu speichern.
  • Laden Sie die vollständige Sicherungsdatei der Beispieldatenbank für SQL Server "Wide World Importers" herunter. Diese Datenbank simuliert die Produktionsdatenbank, die Sie klonen möchten.

So erstellen Sie das Verzeichnis und laden die Sicherungsdatei herunter:

  1. Klicken Sie in Ihrer RDP-Sitzung in der Windows-Taskleiste auf die Schaltfläche Start. Geben Sie PowerShell ein und wählen Sie die Anwendung "Windows PowerShell" aus.

  2. Erstellen Sie in der PowerShell-Eingabeaufforderung eine Verzeichnisstruktur für den Datenbankspeicher:

    mkdir D:\sql-server-data\wideworldimporters
    
  3. Laden Sie die Sicherungsdatei in Laufwerk D herunter:

    bitsadmin /transfer sampledb /dynamic /download /priority FOREGROUND `
      https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak `
      D:\sql-server-data\WideWorldImporters-Full.bak
    

Beispieldatenbank wiederherstellen

Sie müssen die Beispieldatenbank auf Laufwerk D (data) wiederherstellen, entweder interaktiv über die Assistenten von Microsoft SQL Server Management Studio (SSMS) oder direkt durch Ausführen eines Transact-SQL-Befehls.

SSMS-Assistent

  1. Klicken Sie in Ihrer RDP-Sitzung in der Windows-Taskleiste auf die Schaltfläche Start, geben Sie ssms ein und wählen Sie Microsoft SQL Server Management Studio (Als Administrator ausführen) aus.
  2. Klicken Sie nach dem Start der Anwendung auf Verbinden, um über die Windows-Authentifizierung eine Verbindung zum Datenbankmodul sql-server-prod herzustellen.
  3. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Datenbanken und wählen Sie dann Datenbank wiederherstellen aus.
  4. Wählen Sie unter Quelle die Option Gerät aus und klicken Sie dann neben dem Gerätenamen auf die Schaltfläche [...].
  5. Achten Sie darauf, dass im Dialogfeld Sicherungsmedien auswählen für Sicherungsmedientyp die Option Datei ausgewählt ist. Klicken Sie dann auf Hinzufügen.
  6. Öffnen Sie in der Dateiauswahl D:\sql-server-data, klicken Sie auf die Datei WideWorldImporters-Full.bak und dann auf OK.
  7. Klicken Sie auf OK, um das Dialogfeld Sicherungsmedien auswählen zu schließen.

    Das Dialogfeld Datenbank wiederherstellen enthält jetzt Daten zur Datenbanksicherung von Wide World Importers.

  8. Klicken Sie unter Seite auswählen auf Dateien.

  9. Klicken Sie auf das Kästchen Alle Dateien verschieben in Ordner.

  10. Geben Sie in den Feldern Datendateiordner und Protokolldateiordner D:\sql-server-data\wideworldimporters ein.

    Screenshot: Dialogfeld "Datenbank wiederherstellen"

  11. Klicken Sie auf OK, um den Wiederherstellungsvorgang zu starten.

Nach einigen Minuten werden Sie darüber informiert, dass die Datenbank wiederhergestellt wurde.

Transact-SQL

  1. Klicken Sie in Ihrer RDP-Sitzung in der Windows-Taskleiste auf die Schaltfläche Start, geben Sie ssms ein und wählen Sie Microsoft SQL Server Management Studio (Als Administrator ausführen) aus.
  2. Klicken Sie nach dem Start der Anwendung auf Verbinden, um über die Windows-Authentifizierung eine Verbindung zum Datenbankmodul sql-server-prod herzustellen.
  3. Wählen Sie Datei > Neu > Abfrage mit aktueller Verbindung aus, um ein neues Abfragefenster zu öffnen.
  4. Starten Sie eine Wiederherstellung aus der heruntergeladenen Sicherungsdatei:

    USE [master]
    GO
    
    RESTORE DATABASE [WideWorldImporters]
      FROM  DISK = N'D:\SQL-SERVER-DATA\WideWorldImporters-Full.bak'
      WITH  FILE = 1,
      MOVE N'WWI_Primary' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.mdf',
      MOVE N'WWI_UserData' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_UserData.ndf',
      MOVE N'WWI_Log' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.ldf',
      MOVE N'WWI_InMemory_Data_1' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_InMemory_Data_1',
      NOUNLOAD,
      STATS = 5
    GO
    

    Mit diesem Befehl werden die Datenbank und die Logdatei im Verzeichnis D:\sql-server-data\wideworldimporters wiederhergestellt.

  5. Klicken Sie mit der rechten Maustaste auf den Abfragecode und dann auf Ausführen.

    Warten Sie einige Minuten, bis die Wiederherstellung der Datenbank abgeschlossen ist. Sie können im Objekt-Explorer auf Aktualisieren  klicken, um zu sehen, ob die Datenbank in der Datenbankstruktur aufgeführt ist. Nach Abschluss der Datenbankwiederherstellung können Sie das Abfragefenster schließen, ohne zu speichern.

Um zu prüfen, ob die Beispieldatenbank funktioniert, können Sie eine Abfrage ausführen.

  1. Wählen Sie in Microsoft SQL Management Studio Datei > Neu > Abfrage mit aktueller Verbindung aus, um ein neues Abfragefenster zu öffnen, und kopieren Sie dann den folgenden Code:

    SELECT top(100)
      i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName,
      i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy
    FROM
      WideWorldImporters.Sales.Invoices i
      JOIN WideWorldImporters.Sales.Customers c
      ON i.CustomerID=c.CustomerID
    WHERE i.ConfirmedDeliveryTime IS NOT NULL
    ORDER BY i.InvoiceDate desc;
    

    Diese Abfrage ruft zusammenfassende Informationen aus den 100 zuletzt gelieferten Rechnungen ab.

  2. Klicken Sie mit der rechten Maustaste auf das Abfragefenster und klicken Sie auf Ausführen.

    Im Bereich Ergebnisse werden die Daten zusammengefasst.

    Screenshot mit dem Ergebnisbereich einer Abfrage zur Beispieldatenbank

VM-Testinstanz erstellen

In diesem Abschnitt erstellen Sie eine SQL Server-Instanz namens sql-server-test als Ziel für die geklonte Datenbank. Die Konfiguration dieser Instanz ist mit der Konfiguration der Produktionsinstanz identisch. Sie erstellen jedoch kein zweites Datenlaufwerk. Stattdessen hängen Sie das Datenlaufwerk später in dieser Anleitung an.

Console

  1. Rufen Sie die Seite VM-Instanzen auf.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf Erstellen.

  3. Geben Sie im Feld Name den Wert sql-server-test ein.

  4. Wählen Sie für Region die Option us-east1 aus.

  5. Wählen Sie als Zone us-east1-b aus.

  6. Ändern Sie unter Maschinenkonfiguration den Maschinentyp in n1-standard-2 (2 vCPUs).

  7. Klicken Sie neben dem Image Bootlaufwerk auf Ändern.

  8. Klicken Sie im Bereich Bootlaufwerk auf den Tab Öffentliche Images.

  9. Wählen Sie in der Drop-down-Liste Betriebssystem die Option SQL Server auf Windows Server aus.

  10. Wählen Sie in der Drop-down-Liste Version SQL Server 2022 Standard auf Windows Server 2022 Datacenter aus.

  11. Folgende Werte müssen festgelegt sein:

    • Bootlaufwerktyp ist auf Nichtflüchtiger Standardspeicher eingestellt.
    • Größe (GB) ist auf 50 festgelegt.
  12. Klicken Sie auf Auswählen.

  13. Legen Sie unter Identität und API-Zugriff die Option Zugriffsbereiche auf Uneingeschränkten Zugriff auf alle Cloud APIs zulassen fest.

  14. Klicken Sie auf Erstellen.

Cloud Shell

  1. Cloud Shell öffnen

    Zu Cloud Shell

  2. Erstellen Sie die SQL Server-Testinstanz:

    gcloud compute instances create sql-server-test \
        --machine-type=n1-standard-2 \
        --scopes=cloud-platform \
        --image-family=sql-std-2022-win-2022 \
        --image-project=windows-sql-cloud \
        --boot-disk-size=50GB \
        --boot-disk-device-name=sql-server-test \
        --subnet=$SUBNET_NAME
    

    Sie können die Warnung zur Laufwerkleistung ignorieren, da Sie für diese Anleitung keine hohe Leistung benötigen.

Verbindung zur VM-Instanz herstellen

  1. Öffnen Sie in der Google Cloud Console die Seite VM-Instanzen.

    Zur Seite "VM-Instanzen"

  2. Warten Sie etwa fünf Minuten, bis die VM-Instanz bereit ist.

    Sie können den Initialisierungsprozess der VM überwachen. Rufen Sie dazu die Ausgabe des seriellen Ports in Cloud Shell auf:

    gcloud compute instances tail-serial-port-output sql-server-prod
    

    Wenn die folgende Meldung angezeigt wird, ist die Initialisierung abgeschlossen.

    Instance setup finished. sql-server-test is ready to use.
    

    Drücken Sie Strg+C, um das Monitoring des seriellen Ports zu beenden.

  3. Klicken Sie auf den Instanznamen sql-server-test, um die Seite mit den VM-Instanzdetails aufzurufen.

  4. Klicken Sie unter Remotezugriff auf Windows-Passwort festlegen und dann auf Festlegen, um Ihr Konto auf dem Remotemaschine zu erstellen.

    Mit diesem Schritt wird ein Passwort für Sie erstellt. Notieren Sie sich das Passwort oder kopieren Sie es in eine sichere, temporäre Datei.

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

  6. Wenn Sie dazu aufgefordert werden, geben Sie das soeben erstellte Passwort ein und klicken Sie auf OK.

  7. Klicken Sie auf Weiter, um das Serverzertifikat anzunehmen und sich bei der Remote-Windows-Instanz anzumelden.

  8. Wenn Sie gefragt werden, ob Ihr PC gefunden werden soll, klicken Sie auf Nein.

Datenbank mit Compute Engine-Laufwerk-Snapshots klonen

Eine Möglichkeit, eine auf Compute Engine ausgeführte SQL Server-Datenbank zu klonen, besteht darin, die Datenbank auf einem separaten Datenlaufwerk zu speichern und Snapshots von nichtflüchtigem Speicher zu verwenden, um einen Klon dieses Laufwerks zu erstellen.

Mit Snapshots nichtflüchtiger Speicher können Sie eine Kopie der Daten auf dem Laufwerk zu einem bestimmten Zeitpunkt abrufen. Die Planung von Laufwerk-Snapshots ist eine Möglichkeit, Ihre Daten automatisch zu sichern.

In diesem Abschnitt der Anleitung führen Sie folgende Schritte aus:

  • Snapshot des Datenlaufwerks des Produktionsservers erstellen
  • Sie erstellen ein neues Laufwerk anhand dieses Snapshots.
  • Sie stellen das neue Laufwerk auf dem Testserver bereit.
  • Sie hängen die Datenbank auf diesem Laufwerk an SQL Server auf der Testinstanz an.

Das folgende Diagramm zeigt, wie eine Datenbank mithilfe von Laufwerk-Snapshots geklont wird.

Diagramm, das die Einrichtung zum Klonen einer SQL Server-Datenbank mit Datenträger-Snapshots zeigt.

Laufwerk-Snapshot erstellen

Console

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

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf den Namen der Instanz sql-server-prod.

  3. Klicken Sie auf der Seite mit den VM-Instanzdetails auf das Laufwerk sql-server-prod-data.

  4. Klicken Sie auf Snapshot erstellen.

  5. Geben Sie dem Snapshot den Namen sql-server-prod-data-snapshot.

  6. Wählen Sie als Standort die Option Regional aus.

  7. Die Region muss auf us-east1 festgelegt sein (entspricht der Ihrer VM-Instanzen).

  8. Aktivieren Sie die Option VSS aktivieren.

    Diese Option verwendet den Volumeschattenkopie-Dienst in Microsoft Windows, um einen konsistenten Snapshot zu erstellen.

  9. Klicken Sie auf Erstellen.

    Nach einigen Minuten ist Ihr Snapshot erstellt.

Cloud Shell

  1. Cloud Shell öffnen

    Zu Cloud Shell

  2. Erstellen Sie in der Zone, in der sich auch die VM-Instanz befindet, einen Snapshot des Datenlaufwerks:

    gcloud compute disks snapshot sql-server-prod-data \
         --snapshot-names=sql-server-prod-data-snapshot \
         --guest-flush \
         --zone="${ZONE}"
    

    Die Option --guest-flush verwendet den Volumeschattenkopie-Dienst in Microsoft Windows, um einen konsistenten Snapshot zu erstellen. Nach einigen Minuten ist Ihr Snapshot erstellt.

Laufwerk-Snapshot an die Testinstanz anhängen

Sie müssen aus dem erstellten Snapshot ein neues Datenlaufwerk erstellen und es dann an die Instanz sql-server-test anhängen.

Console

In den folgenden Schritten erstellen Sie einen neuen nichtflüchtigen Speicher, verwenden den Snapshot des Produktionslaufwerks für seinen Inhalt und hängen das Laufwerk an die Testinstanz an.

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

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf den Instanznamen sql-server-test.

  3. Klicken Sie auf der Seite VM-Instanzdetails auf Bearbeiten.

  4. Klicken Sie auf Neues Laufwerk hinzufügen .

  5. Geben Sie dem neuen Laufwerk den Namen sql-server-test-data.

  6. Wählen Sie als Quelltyp die Option Snapshot aus.

  7. Wählen Sie für die von Ihnen erstellte Instanz sql-server-prod-data-snapshot den Quell-Snapshot aus.

  8. Der Modus muss auf Lesen/Schreiben eingestellt sein.

  9. Klicken Sie auf Fertig.

Cloud Shell

  1. Cloud Shell öffnen

    Zu Cloud Shell

  2. Erstellen Sie einen neuen nichtflüchtigen Speicher. Verwenden Sie dazu den Snapshot des Produktionslaufwerks als Inhalt:

    gcloud beta compute disks create sql-server-test-data \
         --size=100GB \
         --source-snapshot=sql-server-prod-data-snapshot \
         --zone="${ZONE}"
    
  3. Hängen Sie das neue Laufwerk mit Lese-/Schreibberechtigungen an die Instanz sql-server-test an:

    gcloud compute instances attach-disk sql-server-test \
        --disk=sql-server-test-data --mode=rw
    

Das neue Datenlaufwerk unter Windows bereitstellen

Das von Ihnen erstellte Laufwerk ist an die VM-Instanz angehängt, ist aber offline und das Volume ist schreibgeschützt. Führen Sie die folgenden Schritte aus, um das Volume mit Lese-/Schreibzugriff zu konfigurieren und bereitzustellen:

  1. Klicken Sie im RDP-Client-Fenster, das mit Ihrer Instanz sql-server-test verbunden ist, auf der Windows-Taskleiste auf die Schaltfläche Start, geben Sie diskpart ein und klicken Sie dann auf diskpart um DiskPart zu öffnen.
  2. Wenn Sie gefragt werden, ob die Anwendung Änderungen vornehmen darf, klicken Sie auf Ja.
  3. Eine Liste der Laufwerke anzeigen, die mit Ihrer Instanz verknüpft sind:

    list disk
    

    Die Ausgabe sieht so aus:

    
    Disk ###  Status         Size     Free     Dyn  Gpt
    --------  -------------  -------  -------  ---  ---
    Disk 0    Online           50 GB      0 B
    Disk 1    Offline         100 GB      0 B       *
     

    Ihr Datenlaufwerk (Laufwerk 1, 100 GB) ist offline.

  4. Wählen Sie das Datenlaufwerk aus:

    select disk 1
    
  5. Stellen Sie das Laufwerk online:

    online disk
    
  6. Liste der verfügbaren Volumes:

    list volume
    

    Die Ausgabe sieht so aus:

    Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
    ----------  ---  -----------  -----  ----------  -------  ---------  --------
    Volume 0     C                NTFS   Partition     49 GB  Healthy    Boot
    Volume 1                      FAT32  Partition    100 MB  Healthy    System
    Volume 2                      RAW    Partition     99 GB  Healthy
    

    Volume 2 (99 GB) ist Ihr Datenvolumen. Es wird als Ausgeblendet ohne zugewiesenen Laufwerksbuchstaben aufgeführt.

  7. Wählen Sie das Volume aus:

    select volume 2
    
  8. Löschen Sie die Attribute, die beim Erstellen des Volumes aus dem Snapshot festgelegt wurden:

    attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    

    Mit diesem Befehl kann das Volume bereitgestellt werden.

  9. Stellen Sie das Volume als Laufwerk D bereit:

    assign letter=d
    
  10. Beenden Sie DiskPart:

    exit
    

Eigentümerschaft von Dateien und Berechtigungen zurücksetzen

Da Sie das Datenlaufwerk durch Erstellen eines Snapshots auf der Instanz sql-server-prod erstellt haben, unterscheiden sich die Nutzer-IDs für die Eigentümerschaft von Dateien und die Berechtigungen von denen auf der Instanz sql-server-test. Sie müssen die Eigentümerschaft der Dateien zu einem Nutzer auf der Instanz sql-server-test ändern und die Berechtigungen aktualisieren, damit die Dateien für Ihren lokalen Nutzer und den Nutzer MSSQLSERVER lesbar sind.

  1. Klicken Sie im mit Ihrer Instanz sql-server-test verbundenen RDP-Clientfenster in der Windows-Taskleiste auf die Schaltfläche Start und geben Sie cmd ein.
  2. Öffnen Sie die Eingabeaufforderungsanwendung als Administrator.
  3. Legen Sie den Eigentümer der Dateien im Ordner sql-server-data auf den Dienstnutzer MSSQLSERVER fest:

    icacls d:\sql-server-data /setowner "nt service\mssqlserver" /t
    
  4. Setzen Sie alle Berechtigungen für alle Dateien im übergeordneten Ordner sql-server-data zurück:

    icacls d:\sql-server-data /reset /t
    
  5. Aktualisieren Sie die Access Control Lists (ACLs) für den Ordner sql-server-data:

    icacls d:\sql-server-data /grant Administrators:(oi)(ci)f "nt service\mssqlserver":(oi)(ci)f "owner rights":(oi)(ci)f  %USERNAME%:(oi)(ci)f
    
  6. Deaktivieren Sie die Übernahme aus dem Stammverzeichnis des Laufwerks, damit nur die vorherigen Berechtigungen angewendet werden:

    icacls d:\sql-server-data /inheritancelevel:r
    
  7. Beenden Sie die Eingabeaufforderungsanwendung:

    exit
    

Die SQL Server-Instanz und der lokale Nutzer auf der Instanz sql-server-test können jetzt auf die Datenbankdateien zugreifen.

Geklonte Datenbank anhängen

Sie hängen jetzt die geklonte Datenbank auf Laufwerk D (data) an die SQL Server-Testinstanz an. Sie können die Datenbank entweder interaktiv mithilfe der Microsoft SQL Server Management Studio-Assistenten oder direkt über einen Transact-SQL-Befehl anhängen.

SSMS-Assistent

  1. In der RDP-Sitzung, die mit Ihrer sql-server-test-Instanz verbunden ist, klicken Sie auf die SchaltflächeStart in der Windows-Taskleiste, geben ssms ein und wählen dann Microsoft SQL Server Management Studio (als Administrator ausführen) aus.
  2. Klicken Sie auf Verbinden, um über die Windows-Authentifizierung eine Verbindung zum Datenbankmodul sql-server-test herzustellen.
  3. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Datenbanken und wählen Sie Anfügen aus.
  4. Klicken Sie im Assistenten Datenbanken hinzufügen auf Hinzufügen.
  5. Suchen Sie das Verzeichnis D:\sql-server-data\wideworldimporters, klicken Sie auf die Datei WideWorldImporters.mdf und dann auf OK.
  6. Klicken Sie auf OK, um die Datenbank anzuhängen.

    Nach kurzer Zeit ist Ihre geklonte Datenbank angehängt. Sie können im Objekt-Explorer auf Aktualisieren  klicken, um zu sehen, ob die Datenbank in der Datenbankstruktur aufgeführt ist.

Transact-SQL

  1. In einer RDP-Sitzung, die mit Ihrer sql-server-test-Instanz verbunden ist, klicken Sie auf die SchaltflächeStart in der Windows-Taskleiste, geben ssms ein und wählen dann Microsoft SQL Server Management Studio (als Administrator ausführen) aus.
  2. Klicken Sie auf Verbinden, um über die Windows-Authentifizierung eine Verbindung zum Datenbankmodul sql-server-prod herzustellen.
  3. Wählen Sie Datei > Neu > Abfrage mit aktueller Verbindung aus, um ein neues Abfragefenster zu öffnen.
  4. Hängen Sie die Daten- und Logdateien im Verzeichnis D:\sql-server-data\wideworldimporters an:

    USE [master]
    GO
    
    CREATE DATABASE [WideWorldImporters] ON
    ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters.mdf' ),
    ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters.ldf' ),
    ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters_UserData.ndf' )
     FOR ATTACH
    GO
    
  5. Klicken Sie mit der rechten Maustaste auf den Abfragecode und dann auf Ausführen.

    Nach kurzer Zeit ist Ihre geklonte Datenbank angehängt. Sie können im Objekt-Explorer auf Aktualisieren  klicken, um zu sehen, ob die Datenbank in der Datenbankstruktur aufgeführt ist. Nachdem die Datenbank angehängt wurde, können Sie das Abfragefenster schließen, ohne es zu speichern.

Sie können eine Abfrage ausführen, um zu prüfen, ob die Beispieldatenbank funktioniert.

  1. Wählen Sie in Microsoft SQL Server Management Studio Datei > Neu > Abfrage mit aktueller Verbindung aus, um ein neues Abfragefenster zu öffnen, und kopieren Sie den folgenden Code:

    SELECT top(100)
      i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName,
      i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy
    FROM
      WideWorldImporters.Sales.Invoices i
      JOIN WideWorldImporters.Sales.Customers c
      ON i.CustomerID=c.CustomerID
    WHERE i.ConfirmedDeliveryTime IS NOT NULL
    ORDER BY i.InvoiceDate desc;
    

    Diese Abfrage ruft zusammenfassende Informationen aus den 100 zuletzt gelieferten Rechnungen ab.

  2. Klicken Sie zum Ausführen der Abfrage mit der rechten Maustaste auf das Abfragefenster und wählen Sie dann Ausführen aus.

    Im Bereich Ergebnisse werden die Daten zusammengefasst.

    Screenshot mit dem Ergebnisbereich einer Abfrage zur Beispieldatenbank

Nachdem Sie nun gesehen haben, wie Sie eine Datenbank mithilfe von Snapshots nichtflüchtiger Speicher klonen, sollten Sie versuchen, eine Datenbank mithilfe von Sichern und Wiederherstellen zu klonen. Um die Anleitung für diesen zweiten Ansatz abzuschließen, müssen Sie die Datenbank löschen, die Sie aus der Instanz sql-server-test geklont haben.

Geklonte Datenbank löschen

Führen Sie die folgenden Schritte aus, um die geklonte Datenbank zu löschen, die Sie mithilfe von Laufwerk-Snapshots erstellt haben.

SSMS-Assistent

  1. Öffnen Sie in der mit Ihrer Instanz sql-server-test verbundenen RDP-Sitzung Microsoft SQL Server Management Studio und stellen Sie dann eine Verbindung zum Datenbankmodul sql-server-test her.
  2. Erweitern Sie im Objekt-Explorer Datenbanken, klicken Sie mit der rechten Maustaste auf die Datenbank WorldWideImporters und wählen Sie Löschen aus.
  3. Im Assistenten Objekt löschen muss das Kästchen Vorhandene Verbindungen trennen aktiviert sein.
  4. Klicken Sie auf OK.

Transact-SQL

  1. Öffnen Sie in der mit Ihrer Instanz sql-server-test verbundenen RDP-Sitzung Microsoft SQL Server Management Studio und stellen Sie dann eine Verbindung zum Datenbankmodul sql-server-test her.
  2. Sie können alle Verbindungen zur Datenbank WideWorldImporters trennen und löschen. Kopieren Sie dazu das folgende Skript in ein neues Abfragefenster, klicken Sie mit der rechten Maustaste auf den Code und dann auf Ausführen:

    USE [master]
    GO
    ALTER DATABASE [WideWorldImporters] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    GO
    DROP DATABASE [WideWorldImporters]
    GO
    

    Nachdem die Datenbank gelöscht wurde, können Sie das Abfragefenster schließen, ohne zu speichern. Sie können im Objekt-Explorer auf Aktualisieren  klicken, um zu bestätigen, dass die Datenbank gelöscht wurde.

Durch Sichern und Wiederherstellen klonen

Eine zweite Methode zum Klonen einer SQL Server-Datenbank, die auf Compute Engine ausgeführt wird, ist die Verwendung der Sicherung und Wiederherstellung des nativen SQL-Servers. Bei diesem Ansatz übertragen Sie die Sicherung mithilfe von Cloud Storage.

In diesem Bereich der Anleitung werden Ressourcen verwendet, die Sie im Abschnitt Datenbank mit Compute Engine-Laufwerk-Snapshots klonen dieser Anleitung erstellt haben. Wenn Sie diesen Abschnitt nicht abgeschlossen haben, müssen Sie dies nachholen, bevor Sie fortfahren.

In diesem Abschnitt der Anleitung führen Sie folgende Schritte aus:

  • Cloud Storage-Bucket erstellen.
  • Die Datenbank auf dem Produktionsserver sichern.
  • Die Sicherungsdatei vom Produktionsserver in Cloud Storage kopieren.
  • Die Sicherungsdatei aus Cloud Storage auf den Testserver kopieren.
  • Die Sicherung auf der Testinstanz wiederherstellen.

Das folgende Diagramm zeigt, wie eine Datenbank durch Übertragen einer Sicherung mit Cloud Storage geklont wird.

Diagramm: Einrichtung zum Klonen einer SQL Server-Datenbank mit Cloud Storage

Da Systeme außerhalb von Google Cloud Zugriff auf Cloud Storage erhalten können, können Sie mit diesem Ansatz Datenbanken von externen SQL Server-Instanzen klonen.

Cloud Storage-Bucket erstellen

Sie müssen einen Cloud Storage-Bucket erstellen, in dem die Sicherungsdateien gespeichert werden, während Sie sie von der Instanz sql-server-prod in die Instanz sql-server-test übertragen.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud Storage-Browser.

    Zum Cloud Storage-Browser

  2. Klicken Sie auf Bucket erstellen.

  3. Nennen Sie den Bucket project-name-bucket.

    Ersetzen Sie dabei Folgendes:

    • project-name: ID Ihres Google Cloud-Projekts.
  4. Maximieren Sie Standard-Speicherklasse auswählen und wählen Sie dann Regional aus.

  5. Wählen Sie für Standort die Option us-east1 aus.

  6. Klicken Sie auf Erstellen.

Cloud Shell

  1. Cloud Shell öffnen

    Zu Cloud Shell

  2. Erstellen Sie einen Cloud Storage-Bucket in derselben Region wie Ihre VM-Instanzen:

    gsutil mb -l "${REGION}" "gs://$(gcloud config get-value project)-bucket"
    

Vollständige Sicherung der Datenbank zu einem bestimmten Zeitpunkt erstellen

In Ihrer Produktionsumgebung erstellen Sie möglicherweise bereits Sicherungen. Diese Sicherungen können Sie als Grundlage für das Klonen Ihrer Datenbank verwenden. In dieser Anleitung erstellen Sie eine Kopiesicherung, damit keine vorhandenen vollständigen oder inkrementellen Sicherungspläne beeinflusst werden.

SSMS-Assistent

  1. Öffnen Sie in der mit Ihrer Instanz sql-server-prod verbundenen RDP-Sitzung Microsoft SQL Server Management Studio und stellen Sie dann eine Verbindung zum Datenbankmodul sql-server-prod her.
  2. Maximieren Sie im Objekt-Explorer Datenbanken, klicken Sie mit der rechten Maustaste auf die Datenbank WorldWideImporters und wählen Sie Tasks > Sichern aus.
  3. Im Assistenten Datenbank sichern müssen die folgenden Werte festgelegt sein:
    • Sicherungstyp ist auf Vollständig eingestellt.
    • Copy-only backup ist ausgewählt.
    • Back up to ist auf Disk eingestellt.
  4. Klicken Sie zum Hinzufügen einer Sicherungsdatei auf Hinzufügen.
  5. Geben Sie im Feld Ziel den Wert D:\sql-server-data\WideWorldImporters-copy.bak ein.

    Screenshot: Dialogfeld "Datenbank sichern"

  6. Wählen Sie die Seite Medienoptionen und dann Alle vorhandenen Sicherungssätze überschreiben aus.

  7. Wählen Sie die Seite Sicherungsoptionen aus und ändern Sie dann Sicherungskomprimierung festlegen in Sicherung komprimieren.

  8. Klicken Sie zum Erstellen der Sicherung auf OK.

    Die Erstellung der Sicherung nimmt einige Minuten in Anspruch.

Transact-SQL

  1. Öffnen Sie in der mit Ihrer Instanz sql-server-prod verbundenen RDP-Sitzung Microsoft SQL Server Management Studio und stellen Sie dann eine Verbindung zum Datenbankmodul sql-server-prod her.
  2. Um eine komprimierte Kopiesicherung der Datenbank WideWorldImporters in die Datei d:\sql-server-data\WideWorldImporters-copy.bak durchzuführen, kopieren Sie das folgende Skript in ein neues Abfragefenster, klicken Sie mit der rechten Maustaste auf den Code und klicken Sie dann auf Ausführen.

    BACKUP DATABASE [WideWorldImporters]
       TO  DISK = N'd:\sql-server-data\WideWorldImporters-copy.bak'
       WITH  COPY_ONLY, NOFORMAT, INIT,
       NAME = N'WideWorldImporters-Full Database Backup',
       SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10
    GO
    

    Warten Sie einige Minuten, bis der Server die Sicherung erstellt hat. Nachdem die Sicherung der Datenbank abgeschlossen ist, können Sie das Abfragefenster schließen, ohne zu speichern.

Sicherungsdatei in Cloud Storage kopieren

  1. Öffnen Sie in der mit Ihrer Instanz sql-server-prod verbundenen RDP-Sitzung ein Windows PowerShell-Fenster.
  2. Kopieren Sie die Sicherungsdatei in den Cloud Storage-Bucket, den Sie zuvor erstellt haben:

    gsutil cp -n d:\sql-server-data\WideWorldImporters-copy.bak "gs://$(gcloud config get-value project)-bucket/"
    
  3. Beenden Sie PowerShell.

    exit
    

Sicherungsdatei aus Cloud Storage in sql-server-test kopieren

  1. Öffnen Sie in der mit Ihrer Instanz sql-server-test verbundenen RDP-Sitzung ein Windows PowerShell-Fenster.
  2. Kopieren Sie die Sicherungsdatei in den Cloud Storage-Bucket, den Sie zuvor erstellt haben:

    gsutil cp "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" d:\sql-server-data\
    
  3. Beenden Sie PowerShell.

    exit
    

Ihre Testinstanz verfügt jetzt über die vollständige Sicherungskopie Ihrer Datenbank auf dem lokalen Laufwerk.

Sicherung wiederherstellen

Sie können jetzt die Kopiesicherung auf Laufwerk D (data) der Instanz sql-server-test wiederherstellen.

SSMS-Assistent

  1. Öffnen Sie in der mit Ihrer Instanz sql-server-test verbundenen RDP-Sitzung Microsoft SQL Server Management Studio und stellen Sie dann eine Verbindung zum Datenbankmodul sql-server-test her.
  2. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Datenbanken und wählen Sie dann Datenbank wiederherstellen aus.
  3. Wählen Sie als Quelle die Option Gerät aus und klicken Sie dann neben dem Gerätenamen auf die Schaltfläche [...].
  4. Wählen Sie im Dialogfeld Sicherungsmedien auswählen in der Liste Sicherungsmedientyp die Option Datei aus und klicken Sie dann auf Hinzufügen.
  5. Öffnen Sie in der Dateiauswahl D:\sql-server-data, klicken Sie auf die Datei WideWorldImporters-copy.bak und dann auf OK.
  6. Klicken Sie auf OK, um das Dialogfeld Sicherungsmedien auswählen zu schließen.

    Das Dialogfeld Datenbank wiederherstellen enthält jetzt Daten zur Datenbanksicherung WideWorldImporters.

  7. Klicken Sie unter Seite auswählen auf Dateien.

  8. Wählen Sie Alle Dateien verschieben in Ordner aus.

  9. Geben Sie in den Feldern Datendateiordner und Protokolldateiordner D:\sql-server-data\wideworldimporters ein.

    Screenshot: Dialogfeld "Datenbank wiederherstellen"

  10. Klicken Sie zum Starten der Wiederherstellung auf OK.

    Wenn der Vorgang abgeschlossen ist, wird die Meldung Database 'WideWorldImporters' restored successfully angezeigt.

Transact-SQL

  1. Öffnen Sie in der mit Ihrer Instanz sql-server-test verbundenen RDP-Sitzung Microsoft SQL Server Management Studio und stellen Sie dann eine Verbindung zum Datenbankmodul sql-server-test her.
  2. Wählen Sie Datei > Neu > Abfrage mit aktueller Verbindung aus, um ein neues Abfragefenster zu öffnen.
  3. Kopieren Sie den folgenden T-SQL-Befehl, um eine Wiederherstellung aus der Sicherungsdatei zu starten, die Sie aus Cloud Storage kopiert haben, und stellen Sie die Datenbank und die Logdatei im Verzeichnis D:\sql-server-data\wideworldimporters wieder her:

    USE [master]
    GO
    
    RESTORE DATABASE [WideWorldImporters]
      FROM  DISK = N'D:\SQL-SERVER-DATA\WideWorldImporters-copy.bak'
      WITH  FILE = 1,
      MOVE N'WWI_Primary' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.mdf',
      MOVE N'WWI_UserData' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_UserData.ndf',
      MOVE N'WWI_Log' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.ldf',
      MOVE N'WWI_InMemory_Data_1' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_InMemory_Data_1',
      NOUNLOAD,
      STATS = 5
    GO
    
  4. Klicken Sie mit der rechten Maustaste auf den Code und klicken Sie auf Ausführen.

    Nach ein paar Minuten ist die Datenbankwiederherstellung abgeschlossen. Sie können im Objekt-Explorer auf Aktualisieren klicken, um zu sehen, ob die Datenbank in der Datenbankstruktur aufgeführt ist. Nach Abschluss der Datenbankwiederherstellung können Sie das Abfragefenster schließen, ohne zu speichern.

Sie können eine Abfrage ausführen, um zu testen, ob die Datenbank funktioniert.

  1. Wählen Sie in Microsoft SQL Server Management Studio Datei > Neu > Abfrage mit aktueller Verbindung aus, um ein neues Abfragefenster zu öffnen, und kopieren Sie dann den folgenden Code:

    SELECT top(100)
      i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName,
      i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy
    FROM
      WideWorldImporters.Sales.Invoices i
      JOIN WideWorldImporters.Sales.Customers c
      ON i.CustomerID=c.CustomerID
    WHERE i.ConfirmedDeliveryTime IS NOT NULL
    ORDER BY i.InvoiceDate desc;
    

    Diese Abfrage ruft zusammenfassende Informationen aus den 100 zuletzt gelieferten Rechnungen ab.

  2. Klicken Sie mit der rechten Maustaste auf das Abfragefenster und dann auf Ausführen.

    Im Bereich Ergebnisse werden die Daten zusammengefasst.

    Screenshot mit dem Ergebnisbereich einer Abfrage zur Beispieldatenbank

Cloud SQL als Klonziel verwenden

Wenn die Zieldatenbank in Cloud SQL gehostet wird und sich die Ursprungsdatenbank in Compute Engine befindet, kann die Datenbank nur geklont werden, indem sie in Cloud Storage gesichert und dann in Cloud SQL wiederhergestellt wird.

Für diese Anleitung verwenden Sie die Sicherung, die Sie im vorherigen Abschnitt erstellt haben.

Cloud SQL for SQL Server-Instanz erstellen

  1. Cloud Shell öffnen

    Cloud Shell öffnen

  2. Erstellen Sie eine Cloud SQL for SQL Server-Instanz, auf der dieselbe Datenbankversion wie auf der Instanz sql-server-prod ausgeführt wird:

    gcloud sql instances create sqlserver-cloudsql  \
      --database-version=SQLSERVER_2022_STANDARD \
      --cpu=2 \
      --memory=5GB \
      --root-password=sqlserver12@ \
      --region=${REGION}
    

    Damit wird eine Instanz mit dem Root-Nutzer sqlserver und dem Passwort sqlserver12@ erstellt.

Objektberechtigungen aktualisieren

Sowohl im Cloud Storage-Bucket als auch im Backup-Objekt müssen die richtigen Berechtigungen festgelegt werden, damit sie vom Cloud SQL-Dienstkonto gelesen werden können. Diese Berechtigungen werden automatisch festgelegt, wenn Sie das Objekt mithilfe der Google Cloud Console importieren. Sie können sie auch mithilfe von gcloud-Befehlen festlegen.

  1. Cloud Shell öffnen

    Zu Cloud Shell

  2. Legen Sie eine Umgebungsvariable fest, die die Adresse des Dienstkontos Ihrer Cloud SQL-Instanz enthält:

    CLOUDSQL_SA="$(gcloud sql instances describe sqlserver-cloudsql --format='get(serviceAccountEmailAddress)')"
    
  3. Fügen Sie der Bucket-ACL als Autor und dem Exportobjekt als Leser das Dienstkonto hinzu:

    gsutil acl ch -u "${CLOUDSQL_SA}":W "gs://$(gcloud config get-value project)-bucket/"
    gsutil acl ch -u "${CLOUDSQL_SA}":R \
        "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak"
    

Exportierte Datenbank importieren

  1. Cloud Shell öffnen

    Zu Cloud Shell

  2. Importieren Sie die exportierte Datei in Ihre Cloud SQL-Instanz:

    gcloud sql import bak sqlserver-cloudsql \
        "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" \
        --database WideWorldImporters
    

    Geben Sie bei Aufforderung y ein.

  3. Installieren Sie das SQL Server Tools-Paket:

    sudo apt install -y mssql-tools
    

    Um den Lizenzbedingungen zuzustimmen, geben Sie yes ein, wenn Sie dazu aufgefordert werden.

    Mit diesen Tools stellen Sie eine Verbindung zu Cloud SQL über Cloud Shell her, um Abfragen auf der Cloud SQL-Instanz auszuführen.

  4. Verbinden Sie den Cloud SQL-Proxy mit Ihrer SQL Server-Instanz:

    CONNECTION_NAME=$(gcloud sql instances describe sqlserver-cloudsql --format='value(connectionName)')
    cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
    
  5. Führen Sie eine Abfrage aus, um zu prüfen, ob die geklonte Datenbank funktioniert:

    /opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q \
      'SELECT top(100)
        i.InvoiceDate, i.InvoiceID, i.CustomerID, LEFT(c.CustomerName,20) CustomerName,
        i.ConfirmedDeliveryTime, LEFT(i.ConfirmedReceivedBy,20) ConfirmedReceivedBy
      FROM
        WideWorldImporters.Sales.Invoices i
        JOIN WideWorldImporters.Sales.Customers c
        ON i.CustomerID=c.CustomerID
      WHERE i.ConfirmedDeliveryTime IS NOT NULL
      ORDER BY i.InvoiceDate desc;'
    

    Wenn Sie dazu aufgefordert werden, geben Sie das Passwort des Nutzers sqlserver des Datenbankservers sqlserver-cloudsql (sqlserver12@) ein.

    Diese Abfrage ruft zusammenfassende Informationen aus den 100 zuletzt gelieferten Rechnungen ab.

    Die Ausgabe sieht so aus:

    InvoiceDate      InvoiceID   CustomerID  CustomerName         ConfirmedDeliveryTime                  ConfirmedReceivedBy
    ---------------- ----------- ----------- -------------------- -------------------------------------- --------------------
          2016-05-30       70349         581 Wingtip Toys (Munich            2016-05-31 07:05:00.0000000 Youssef Eriksson
          2016-05-30       70350         123 Tailspin Toys (Roe P            2016-05-31 07:10:00.0000000 Ella Zvirbule
          2016-05-30       70351         175 Tailspin Toys (San A            2016-05-31 07:15:00.0000000 Julio Correa
          2016-05-30       70352        1029 Veronika Necesana               2016-05-31 07:20:00.0000000 Veronika Necesana
          2016-05-30       70353        1014 Narendra Tickoo                 2016-05-31 07:25:00.0000000 Narendra Tickoo
          2016-05-30       70354         930 Shantanu Huq                    2016-05-31 07:30:00.0000000 Shantanu Huq
          2016-05-30       70355         963 Be Trang                        2016-05-31 07:35:00.0000000 Be Trang
          2016-05-30       70356         567 Wingtip Toys (Jerome            2016-05-31 07:40:00.0000000 Severins Polis
          2016-05-30       70357         510 Wingtip Toys (Grabil            2016-05-31 07:45:00.0000000 Manish Ghosh
    ...
    

Bereinigen

Wenn Sie vermeiden möchten, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden, können Sie das dafür erstellte Google Cloud-Projekt löschen.

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte