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.
Lernziele
- 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:
- Compute Engine
- Cloud Storage
- Microsoft Windows and SQL server licenses
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.
Hinweise
- 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.
-
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.
- Aktivieren Sie die Compute Engine API. 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.
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
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf Erstellen.
Geben Sie im Feld Name den Wert
sql-server-prod
ein.Wählen Sie für Region die Option us-east1 aus.
Wählen Sie als Zone us-east1-b aus.
Ändern Sie unter Maschinenkonfiguration den Maschinentyp in n1-standard-2 (2 vCPUs).
Klicken Sie neben der Beschreibung Bootlaufwerk auf Ändern.
Klicken Sie im Bereich Bootlaufwerk auf den Tab Öffentliche Images.
Wählen Sie in der Drop-down-Liste Betriebssystem die Option SQL Server auf Windows Server aus.
Wählen Sie in der Drop-down-Liste Version SQL Server 2022 Standard auf Windows Server 2022 Datacenter aus.
Folgende Werte müssen festgelegt sein:
- Bootlaufwerktyp ist auf Nichtflüchtiger Standardspeicher eingestellt.
- Größe (GB) ist auf 50 festgelegt.
Klicken Sie auf Auswählen.
Legen Sie unter Identität und API-Zugriff die Option Zugriffsbereiche auf Uneingeschränkten Zugriff auf alle Cloud APIs zulassen fest.
Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten.
Klicken Sie auf den Tab Laufwerke.
Klicken Sie auf Neues Laufwerk hinzufügen add.
Geben Sie im Feld Name den Wert
sql-server-prod-data
ein.Geben Sie im Feld Größe (GB) den Wert
100
ein.Klicken Sie auf Fertig.
Klicken Sie auf Erstellen.
Cloud Shell
Cloud Shell öffnen
Initialisieren Sie die folgenden Variablen:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Dabei gilt:
VPC_NAME
: Der Name Ihrer VPCSUBNET_NAME
: Der Name Ihres Subnetzes
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.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.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.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
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
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.
Klicken Sie auf den Instanznamen
sql-server-prod
, um die Seite mit den VM-Instanzdetails zu öffnen.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.
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 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.
Wenn Sie dazu aufgefordert werden, geben Sie das soeben erstellte Passwort ein und klicken Sie auf OK.
Klicken Sie auf Weiter, um das Serverzertifikat anzunehmen und sich bei der Remote-Windows-Instanz anzumelden.
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.
- 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 Siediskpart
ein. Klicken Sie dann auf diskpart, um DiskPart zu öffnen. - Wenn Sie gefragt werden, ob die Anwendung Änderungen vornehmen darf, klicken Sie auf Ja.
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.
Wählen Sie das Datenlaufwerk aus:
select disk 1
Initialisieren Sie das Laufwerk:
clean
Erstellen Sie eine GUID-Partitionstabelle:
convert gpt
Erstellen Sie die Datenpartition mit dem gesamten Laufwerk:
create partition primary
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.
Wählen Sie das Volume aus:
select volume 2
Formatieren Sie die Partition mit dem NTFS-Dateisystem und kennzeichnen Sie sie mit
data
:format quick fs=ntfs label=data
Stellen Sie das Laufwerk als Laufwerk D bereit:
assign letter=d
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:
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.Erstellen Sie in der PowerShell-Eingabeaufforderung eine Verzeichnisstruktur für den Datenbankspeicher:
mkdir D:\sql-server-data\wideworldimporters
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
- 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. - Klicken Sie nach dem Start der Anwendung auf Verbinden, um über die Windows-Authentifizierung eine Verbindung zum Datenbankmodul
sql-server-prod
herzustellen. - Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Datenbanken und wählen Sie dann Datenbank wiederherstellen aus.
- Wählen Sie unter Quelle die Option Gerät aus und klicken Sie dann neben dem Gerätenamen auf die Schaltfläche [...].
- Achten Sie darauf, dass im Dialogfeld Sicherungsmedien auswählen für Sicherungsmedientyp die Option Datei ausgewählt ist. Klicken Sie dann auf Hinzufügen.
- Öffnen Sie in der Dateiauswahl
D:\sql-server-data
, klicken Sie auf die DateiWideWorldImporters-Full.bak
und dann auf OK. 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.
Klicken Sie unter Seite auswählen auf Dateien.
Klicken Sie auf das Kästchen Alle Dateien verschieben in Ordner.
Geben Sie in den Feldern Datendateiordner und Protokolldateiordner
D:\sql-server-data\wideworldimporters
ein.Klicken Sie auf OK, um den Wiederherstellungsvorgang zu starten.
Nach einigen Minuten werden Sie darüber informiert, dass die Datenbank wiederhergestellt wurde.
Transact-SQL
- 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. - Klicken Sie nach dem Start der Anwendung auf Verbinden, um über die Windows-Authentifizierung eine Verbindung zum Datenbankmodul
sql-server-prod
herzustellen. - Wählen Sie Datei > Neu > Abfrage mit aktueller Verbindung aus, um ein neues Abfragefenster zu öffnen.
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.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 refresh 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.
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.
Klicken Sie mit der rechten Maustaste auf das Abfragefenster und klicken Sie auf Ausführen.
Im Bereich Ergebnisse werden die Daten zusammengefasst.
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
Rufen Sie die Seite VM-Instanzen auf.
Klicken Sie auf Erstellen.
Geben Sie im Feld Name den Wert
sql-server-test
ein.Wählen Sie für Region die Option us-east1 aus.
Wählen Sie als Zone us-east1-b aus.
Ändern Sie unter Maschinenkonfiguration den Maschinentyp in n1-standard-2 (2 vCPUs).
Klicken Sie neben dem Image Bootlaufwerk auf Ändern.
Klicken Sie im Bereich Bootlaufwerk auf den Tab Öffentliche Images.
Wählen Sie in der Drop-down-Liste Betriebssystem die Option SQL Server auf Windows Server aus.
Wählen Sie in der Drop-down-Liste Version SQL Server 2022 Standard auf Windows Server 2022 Datacenter aus.
Folgende Werte müssen festgelegt sein:
- Bootlaufwerktyp ist auf Nichtflüchtiger Standardspeicher eingestellt.
- Größe (GB) ist auf 50 festgelegt.
Klicken Sie auf Auswählen.
Legen Sie unter Identität und API-Zugriff die Option Zugriffsbereiche auf Uneingeschränkten Zugriff auf alle Cloud APIs zulassen fest.
Klicken Sie auf Erstellen.
Cloud Shell
Cloud Shell öffnen
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
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
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.
Klicken Sie auf den Instanznamen
sql-server-test
, um die Seite mit den VM-Instanzdetails aufzurufen.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.
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 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.
Wenn Sie dazu aufgefordert werden, geben Sie das soeben erstellte Passwort ein und klicken Sie auf OK.
Klicken Sie auf Weiter, um das Serverzertifikat anzunehmen und sich bei der Remote-Windows-Instanz anzumelden.
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.
Laufwerk-Snapshot erstellen
Console
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf den Namen der Instanz
sql-server-prod
.Klicken Sie auf der Seite mit den VM-Instanzdetails auf das Laufwerk
sql-server-prod-data
.Klicken Sie auf Snapshot erstellen.
Geben Sie dem Snapshot den Namen
sql-server-prod-data-snapshot
.Wählen Sie als Standort die Option Regional aus.
Die Region muss auf
us-east1
festgelegt sein (entspricht der Ihrer VM-Instanzen).Aktivieren Sie die Option VSS aktivieren.
Diese Option verwendet den Volumeschattenkopie-Dienst in Microsoft Windows, um einen konsistenten Snapshot zu erstellen.
Klicken Sie auf Erstellen.
Nach einigen Minuten ist Ihr Snapshot erstellt.
Cloud Shell
Cloud Shell öffnen
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.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf den Instanznamen
sql-server-test
.Klicken Sie auf der Seite VM-Instanzdetails auf Bearbeiten.
Klicken Sie auf Neues Laufwerk hinzufügen add.
Geben Sie dem neuen Laufwerk den Namen
sql-server-test-data
.Wählen Sie als Quelltyp die Option Snapshot aus.
Wählen Sie für die von Ihnen erstellte Instanz
sql-server-prod-data-snapshot
den Quell-Snapshot aus.Der Modus muss auf Lesen/Schreiben eingestellt sein.
Klicken Sie auf Fertig.
Cloud Shell
Cloud Shell öffnen
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}"
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:
- 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 Siediskpart
ein und klicken Sie dann auf diskpart um DiskPart zu öffnen. - Wenn Sie gefragt werden, ob die Anwendung Änderungen vornehmen darf, klicken Sie auf Ja.
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.
Wählen Sie das Datenlaufwerk aus:
select disk 1
Stellen Sie das Laufwerk online:
online disk
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.
Wählen Sie das Volume aus:
select volume 2
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.
Stellen Sie das Volume als Laufwerk D bereit:
assign letter=d
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.
- Klicken Sie im mit Ihrer Instanz
sql-server-test
verbundenen RDP-Clientfenster in der Windows-Taskleiste auf die Schaltfläche Start und geben Siecmd
ein. - Öffnen Sie die Eingabeaufforderungsanwendung als Administrator.
Legen Sie den Eigentümer der Dateien im Ordner
sql-server-data
auf den DienstnutzerMSSQLSERVER
fest:icacls d:\sql-server-data /setowner "nt service\mssqlserver" /t
Setzen Sie alle Berechtigungen für alle Dateien im übergeordneten Ordner
sql-server-data
zurück:icacls d:\sql-server-data /reset /t
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
Deaktivieren Sie die Übernahme aus dem Stammverzeichnis des Laufwerks, damit nur die vorherigen Berechtigungen angewendet werden:
icacls d:\sql-server-data /inheritancelevel:r
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
- In der RDP-Sitzung, die mit Ihrer
sql-server-test
-Instanz verbunden ist, klicken Sie auf die SchaltflächeStart in der Windows-Taskleiste, gebenssms
ein und wählen dann Microsoft SQL Server Management Studio (als Administrator ausführen) aus. - Klicken Sie auf Verbinden, um über die Windows-Authentifizierung eine Verbindung zum Datenbankmodul
sql-server-test
herzustellen. - Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Datenbanken und wählen Sie Anfügen aus.
- Klicken Sie im Assistenten Datenbanken hinzufügen auf Hinzufügen.
- Suchen Sie das Verzeichnis
D:\sql-server-data\wideworldimporters
, klicken Sie auf die DateiWideWorldImporters.mdf
und dann auf OK. 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 refresh klicken, um zu sehen, ob die Datenbank in der Datenbankstruktur aufgeführt ist.
Transact-SQL
- In einer RDP-Sitzung, die mit Ihrer
sql-server-test
-Instanz verbunden ist, klicken Sie auf die SchaltflächeStart in der Windows-Taskleiste, gebenssms
ein und wählen dann Microsoft SQL Server Management Studio (als Administrator ausführen) aus. - Klicken Sie auf Verbinden, um über die Windows-Authentifizierung eine Verbindung zum Datenbankmodul
sql-server-prod
herzustellen. - Wählen Sie Datei > Neu > Abfrage mit aktueller Verbindung aus, um ein neues Abfragefenster zu öffnen.
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
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 refresh 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.
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.
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.
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
- Ö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 Datenbankmodulsql-server-test
her. - Erweitern Sie im Objekt-Explorer Datenbanken, klicken Sie mit der rechten Maustaste auf die Datenbank
WorldWideImporters
und wählen Sie Löschen aus. - Im Assistenten Objekt löschen muss das Kästchen Vorhandene Verbindungen trennen aktiviert sein.
- Klicken Sie auf OK.
Transact-SQL
- Ö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 Datenbankmodulsql-server-test
her. 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 refresh 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.
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
Wechseln Sie in der Google Cloud Console zur Seite Cloud Storage-Browser.
Klicken Sie auf Bucket erstellen.
Nennen Sie den Bucket
project-name
-bucket.Ersetzen Sie dabei Folgendes:
project-name
: ID Ihres Google Cloud-Projekts.
Maximieren Sie Standard-Speicherklasse auswählen und wählen Sie dann Regional aus.
Wählen Sie für Standort die Option us-east1 aus.
Klicken Sie auf Erstellen.
Cloud Shell
Cloud Shell öffnen
Erstellen Sie einen Cloud Storage-Bucket in derselben Region wie Ihre VM-Instanzen:
gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
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
- Ö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 Datenbankmodulsql-server-prod
her. - Maximieren Sie im Objekt-Explorer Datenbanken, klicken Sie mit der rechten Maustaste auf die Datenbank
WorldWideImporters
und wählen Sie Tasks > Sichern aus. - 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.
- Klicken Sie zum Hinzufügen einer Sicherungsdatei auf Hinzufügen.
Geben Sie im Feld Ziel den Wert
D:\sql-server-data\WideWorldImporters-copy.bak
ein.Wählen Sie die Seite Medienoptionen und dann Alle vorhandenen Sicherungssätze überschreiben aus.
Wählen Sie die Seite Sicherungsoptionen aus und ändern Sie dann Sicherungskomprimierung festlegen in Sicherung komprimieren.
Klicken Sie zum Erstellen der Sicherung auf OK.
Die Erstellung der Sicherung nimmt einige Minuten in Anspruch.
Transact-SQL
- Ö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 Datenbankmodulsql-server-prod
her. 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
- Öffnen Sie in der mit Ihrer Instanz
sql-server-prod
verbundenen RDP-Sitzung ein Windows PowerShell-Fenster. Kopieren Sie die Sicherungsdatei in den Cloud Storage-Bucket, den Sie zuvor erstellt haben:
gcloud storage cp d:\sql-server-data\WideWorldImporters-copy.bak "gs://$(gcloud config get-value project)-bucket/" --no-clobber
Beenden Sie PowerShell.
exit
Sicherungsdatei aus Cloud Storage in sql-server-test kopieren
- Öffnen Sie in der mit Ihrer Instanz
sql-server-test
verbundenen RDP-Sitzung ein Windows PowerShell-Fenster. Kopieren Sie die Sicherungsdatei in den Cloud Storage-Bucket, den Sie zuvor erstellt haben:
gcloud storage cp "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" d:\sql-server-data\
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
- Ö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 Datenbankmodulsql-server-test
her. - Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Datenbanken und wählen Sie dann Datenbank wiederherstellen aus.
- Wählen Sie als Quelle die Option Gerät aus und klicken Sie dann neben dem Gerätenamen auf die Schaltfläche [...].
- Wählen Sie im Dialogfeld Sicherungsmedien auswählen in der Liste Sicherungsmedientyp die Option Datei aus und klicken Sie dann auf Hinzufügen.
- Öffnen Sie in der Dateiauswahl
D:\sql-server-data
, klicken Sie auf die DateiWideWorldImporters-copy.bak
und dann auf OK. Klicken Sie auf OK, um das Dialogfeld Sicherungsmedien auswählen zu schließen.
Das Dialogfeld Datenbank wiederherstellen enthält jetzt Daten zur Datenbanksicherung
WideWorldImporters
.Klicken Sie unter Seite auswählen auf Dateien.
Wählen Sie Alle Dateien verschieben in Ordner aus.
Geben Sie in den Feldern Datendateiordner und Protokolldateiordner
D:\sql-server-data\wideworldimporters
ein.Klicken Sie zum Starten der Wiederherstellung auf OK.
Wenn der Vorgang abgeschlossen ist, wird die Meldung
Database 'WideWorldImporters' restored successfully
angezeigt.
Transact-SQL
- Ö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 Datenbankmodulsql-server-test
her. - Wählen Sie Datei > Neu > Abfrage mit aktueller Verbindung aus, um ein neues Abfragefenster zu öffnen.
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
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 refresh 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.
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.
Klicken Sie mit der rechten Maustaste auf das Abfragefenster und dann auf Ausführen.
Im Bereich Ergebnisse werden die Daten zusammengefasst.
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
Cloud Shell öffnen
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 Passwortsqlserver12@
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.
Cloud Shell öffnen
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)')"
Fügen Sie der Bucket-IAM-Richtlinie das Dienstkonto als Leser und Autor hinzu:
gcloud storage buckets add-iam-policy-binding "gs://$(gcloud config get-value project)-bucket/" \ --member=user:"${CLOUDSQL_SA}" --role=roles/storage.objectUser
Exportierte Datenbank importieren
Cloud Shell öffnen
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.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.
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 &
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 Datenbankserverssqlserver-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.
- 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
- Best Practices für SQL Server-Instanzen
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center