Questo tutorial illustra due modi per clonare Database Microsoft SQL Server in esecuzione su Compute Engine. Un metodo utilizza snapshot di dischi permanenti. L'altro metodo utilizza il backup e ripristino nativi di SQL Server, trasferendo esegui il backup con Cloud Storage. Cloud Storage è il servizio di archiviazione di oggetti di Google Cloud. Offre un modo semplice, sicuro, durevole e ad alta disponibilità di archiviazione .
La clonazione è il processo di copia di un database online su un altro server. La la copia è indipendente dal database esistente e viene conservata come point-in-time senza dover creare uno snapshot. Puoi utilizzare un database clonato per vari scopi senza inserire un il carico massimo sul server di produzione o mettendo a rischio l'integrità dei dati di produzione. Alcune di queste finalità includono:
- Esecuzione di query analitiche
- Test di carico o test di integrazione delle tue app
- Estrazione dei dati per il completamento dei data warehouse
- Esperimenti sui dati in corso
Ogni metodo di clonazione descritto in questo tutorial offre vantaggi e svantaggi. Il metodo ideale per te dipende dalla tua situazione. Le seguenti evidenzia alcuni problemi chiave.
Problema | Metodo 1: snapshot dei dischi | Metodo 2: backup e ripristino mediante Cloud Storage |
---|---|---|
Spazio su disco aggiuntivo richiesto nelle istanze SQL Server | Nessuno spazio su disco aggiuntivo richiesto | Spazio aggiuntivo necessario per l'archiviazione del file di backup durante la creazione e ripristino |
Carico aggiuntivo sulle istanze SQL Server di origine durante la clonazione | Nessun caricamento aggiuntivo | Carico aggiuntivo su CPU e I/O durante la creazione e il caricamento del backup file |
Durata della clonazione | Relativamente veloce per database di grandi dimensioni | Relativamente lenta per database di grandi dimensioni |
Può clonare da istanze SQL Server esterne a Google Cloud | No | Sì |
complessità | Una complessa sequenza di comandi per collegare i dischi clonati | Un insieme relativamente semplice di comandi per la clonazione |
Può sfruttare i sistemi di backup esistenti | Sì, se il sistema di backup utilizza snapshot del disco Google Cloud | Sì, se il sistema di backup scrive i file di backup nativi di SQL Server Cloud Storage |
Granularità della clonazione | Può clonare solo interi dischi | Può clonare solo il database specificato |
Coerenza dei dati | Coerenza al punto dello snapshot | Coerente al punto del backup |
Questo tutorial presuppone che tu abbia familiarità con Microsoft Windows l’amministrazione di sistema, PowerShell e l’amministrazione di Microsoft SQL Server Management Studio.
Obiettivi
- Scopri come eseguire un'istanza SQL Server su Google Cloud.
- Scopri come creare un database demo su un disco secondario.
- Scopri come clonare un database SQL Server utilizzando Snapshot dei dischi di Compute Engine.
- Scopri come clonare un database SQL Server trasferendo un backup con di archiviazione ideale in Cloud Storage.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- Compute Engine
- Cloud Storage
- Microsoft Windows and SQL server licenses
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
- Abilitare l'API Compute Engine. Abilitare l'API
Assicurati di soddisfare questi prerequisiti aggiuntivi:
- Puoi utilizzare Google Chrome del browser.
- Installa un client Remote Desktop Protocol (RDP) di tua scelta. Per ulteriori informazioni, vedi Client Microsoft Remote Desktop. Se hai già installato un client RDP, puoi saltare questa attività.
Configurazione dell'ambiente
Per completare questo tutorial, devi configurare il tuo ambiente di computing con le seguenti:
- Un'istanza SQL Server su Compute Engine (denominata
sql-server-prod
) per rappresentare il server del database di produzione. - Un disco aggiuntivo (denominato
sql-server-prod-data
) collegato al tuo server di produzione per l'archiviazione del database di produzione. - Una copia del Database SQL Server di esempio di Wide World Importers per simulare il database di produzione da clonare.
- Un'istanza SQL Server su Compute Engine denominata
sql-server-test
per rappresentare il server del database di test. Puoi clonare il database su questo server.
Il seguente diagramma illustra questa architettura.
Crea l'istanza VM di produzione
Per simulare un ambiente di produzione, devi configurare una VM di Compute Engine che esegue SQL Server su Windows Server.
L'istanza VM per questo tutorial utilizza due dischi: un disco da 50 GB per il sistema operativo e e un disco da 100 GB per l'archiviazione del database.
In Compute Engine, l'uso di dischi separati offre rendimento vantaggi dell'IA. Le prestazioni del disco sono determinate dalla capacità di archiviazione totale di tutti i dischi permanenti collegati a un'istanza e il numero totale di vCPU sulla tua istanza VM. Pertanto, il database e il file di log possono trovarsi sullo stesso disco.
Console
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic su Crea.
Nel campo Nome, digita
sql-server-prod
.In Regione, seleziona us-east1.
In Zona, seleziona us-east1-b.
In Configurazione macchina, cambia Tipo di macchina in n1-standard-2 (2 vCPU).
Accanto alla descrizione Disco di avvio, fai clic su Cambia.
Nel riquadro Disco di avvio, fai clic sulla scheda Immagini pubbliche.
Nell'elenco a discesa Sistema operativo, seleziona SQL Server su Windows Server.
Nell'elenco a discesa Versione, seleziona SQL Server 2022 Standard su Windows Server 2022 Datacenter.
Assicurati che siano impostati i seguenti valori:
- Il Tipo di disco di avvio è impostato su Disco permanente standard.
- Dimensioni (GB) impostate su 50.
Fai clic su Seleziona.
In Identità e accesso API, imposta Ambiti di accesso su Consenti accesso completo a tutte le API Cloud.
Espandi Gestione, sicurezza, dischi, networking, single-tenancy.
Fai clic sulla scheda Dischi.
Fai clic su Aggiungi nuovo disco add.
Nel campo Nome, digita
sql-server-prod-data
.Nel campo Dimensioni (GB), digita
100
.Fai clic su Fine.
Fai clic su Crea.
Cloud Shell
Apri Cloud Shell.
Inizializza le seguenti variabili:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Dove:
VPC_NAME
: nome del tuo VPCSUBNET_NAME
: nome della subnet
Imposta l'ID progetto predefinito:
gcloud config set project
PROJECT_ID
Sostituisci
PROJECT_ID
con l'ID del tuo progetto Google Cloud.Imposta la tua regione predefinita:
gcloud config set compute/region
REGION
Sostituisci
REGION
con l'ID della regione in cui vuoi eseguire il deployment.Imposta la zona predefinita:
gcloud config set compute/zone
ZONE
Sostituisci
ZONE
con l'ID della zona in cui vuoi eseguire il deployment.Crea un'istanza Compute Engine utilizzando l'immagine dell'app per SQL Server 2022 Standard su 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
Questo comando concede all'istanza l'accesso completo alle API Google Cloud. crea un disco secondario da 100 GB e lo collega all'istanza. Ignora l'avviso sulle prestazioni del disco perché non è necessario delle prestazioni per questo tutorial.
Connettiti all'istanza VM
Nella console Google Cloud, vai alla pagina Istanze VM.
Attendi circa 5 minuti affinché l'istanza VM sia pronta.
Per monitorare il processo di inizializzazione della VM, visualizzane il numero l'output della porta in Cloud Shell:
gcloud compute instances tail-serial-port-output sql-server-prod
Quando viene visualizzato il seguente messaggio, l'inizializzazione è completa.
Instance setup finished. sql-server-prod is ready to use.
Premi Ctrl C per interrompere il monitoraggio della porta seriale.
Fai clic sul nome dell'istanza
sql-server-prod
per aprire l'istanza VM dei dettagli.Nella sezione Accesso remoto, fai clic su Imposta password di Windows, quindi fai clic su. Imposta per creare il tuo account sul computer remoto.
Questo passaggio genera una password per te. Prendi nota della password o copia in un file temporaneo sicuro.
Nella sezione Compute Engine della console Google Cloud, fai clic sul menu a discesa RDP e seleziona Scarica l'opzione file RDP per scaricare il file RDP per la tua istanza.
Utilizza questo file per connetterti all'istanza tramite un client RDP. Per ulteriori informazioni, vedi Client Microsoft Remote Desktop.
Quando ti viene richiesto, inserisci la password appena generata, quindi fai clic su Ok.
Per accettare il certificato del server e accedere all'istanza Windows remota: fai clic su Continua.
Quando ti viene chiesto se desideri che il computer sia rilevabile tramite Altri PC e dispositivi collegati alla rete, fai clic su No.
Configura il disco aggiuntivo
Il secondo disco collegato all'istanza di produzione serve per l'archiviazione di produzione. Questo disco è vuoto, quindi devi partizionare, formattare montarla.
- In una sessione RDP connessa alla tua istanza
sql-server-prod
, fai clic su sul pulsante Start sulla barra delle applicazioni di Windows, digitadiskpart
, quindi fai clic su diskpart per aprire DiskPart. - Quando ti viene chiesto di consentire all'app di apportare modifiche, fai clic su Sì.
Visualizza un elenco di dischi collegati all'istanza:
list disk
L'output è il seguente:
Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 50 GB 0 B Disk 1 Online 100 GB 100 GB
Il disco 1 (100 GB) è il tuo disco dati.
Seleziona il disco dati:
select disk 1
Inizializza il disco:
clean
Crea un Tabella di partizione GUID:
convert gpt
Crea la partizione dei dati utilizzando l'intero disco:
create partition primary
Elenca i volumi disponibili:
list volume
L'output è il seguente:
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
Il volume 2 (99 GB) è il tuo disco dati.
Seleziona il volume:
select volume 2
Formatta la partizione con File system NTFS e l'etichetta
data
:format quick fs=ntfs label=data
Monta il disco come unità D:
assign letter=d
Esci da DiskPart:
exit
Scarica il database di esempio
Per configurare il tuo ambiente per questo esercizio di clonazione, devi eseguire seguenti:
- Crea una struttura di directory sull'unità D (
data
) per archiviare il database. - Scarica Database SQL Server di esempio di Wide World Importers file di backup completo. Questo database simula il database di produzione che vuoi da clonare.
Per creare la directory e scaricare il file di backup, segui questi passaggi:
Nella sessione RDP, fai clic sul pulsante Start sulla barra delle applicazioni di Windows, digita
PowerShell
e seleziona l'app Windows PowerShell.Al prompt di PowerShell, crea una struttura di directory per l’archiviazione del database:
mkdir D:\sql-server-data\wideworldimporters
Scarica il file di backup su Drive D:
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
Ripristina il database di esempio
Devi ripristinare il database di esempio nell'unità D (data
),
in modo interattivo utilizzando
SQL Server Management Studio (SSMS)
o direttamente eseguendo un comando Transact-SQL.
Procedura guidata SSMS
- Nella sessione RDP, fai clic sul pulsante Start sulla barra delle applicazioni di Windows,
Digita
ssms
e seleziona Microsoft SQL Server Management Studio (Esegui come amministratore). - Una volta avviata l'app, fai clic su Connetti per connetterti allo
motore del database
sql-server-prod
utilizzando l'autenticazione di Windows. - In Esplora oggetti, fai clic con il tasto destro del mouse su Database, quindi seleziona Ripristina database.
- In Origine, seleziona Dispositivo, quindi fai clic sul pulsante [...] accanto al nome del dispositivo.
- Nella finestra di dialogo Seleziona dispositivi di backup, assicurati che l'opzione File sia selezionata per Tipo di media di backup, quindi fai clic su Aggiungi.
- Nel selettore di file, vai a
D:\sql-server-data
, fai clic sull'iconaWideWorldImporters-Full.bak
file e fai clic su OK. Fai clic su OK per chiudere la finestra di dialogo Seleziona dispositivi di backup.
La finestra di dialogo Ripristina database ora si compila con i dati sull' Backup dei database Wide World Importers.
In Seleziona una pagina, fai clic su File.
Seleziona la casella di controllo Riposiziona tutti i file nella cartella.
In entrambi i campi Cartella di file di dati e Cartella di file di log, inserisci
D:\sql-server-data\wideworldimporters
.Fai clic su OK per avviare l'operazione di ripristino.
Dopo un paio di minuti, ti viene comunicato che il database ripristinato.
Transact SQL
- Nella sessione RDP, fai clic sul pulsante Start sulla barra delle applicazioni di Windows,
Digita
ssms
e seleziona Microsoft SQL Server Management Studio (Esegui come amministratore). - Una volta avviata l'app, fai clic su Connetti per connetterti allo
motore del database
sql-server-prod
utilizzando l'autenticazione di Windows. - Seleziona File > Nuovo > Query con connessione attuale per aprire una nuova finestra di query.
Avvia un ripristino dal file di backup che hai scaricato:
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
Questo comando ripristina il database e il file di log Directory
D:\sql-server-data\wideworldimporters
.Fai clic con il tasto destro del mouse sul codice della query e fai clic su Esegui.
Attendi un paio di minuti per il completamento del ripristino del database. Tu puoi fare clic su Aggiorna refresh in Esplora oggetti per vedere se viene elencato nella struttura di database. Al termine del processo di ripristino del database hai finito, puoi chiudere la finestra della query senza salvare.
Per verificare che il database di esempio funzioni, puoi eseguire una query.
In Microsoft SQL Server Management Studio, seleziona File > Nuovo > Esegui una query con connessione corrente per aprire una nuova finestra di query, quindi copia il seguente codice:
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;
Questa query recupera informazioni di riepilogo dalle 100 più recenti le fatture inviate.
Fai clic con il tasto destro del mouse sulla finestra della query e fai clic su Esegui.
Nel riquadro Risultati vengono visualizzate le informazioni di riepilogo.
Crea l'istanza VM di test
In questa sezione creerai un'istanza SQL Server denominata sql-server-test
come
la destinazione del database clonato. La configurazione di questa istanza è
identico all'istanza di produzione. Tuttavia, non crei un secondo dato
disk; puoi collegare il disco dati più avanti in questo tutorial.
Console
Vai alla pagina Istanze VM.
Fai clic su Crea.
Nel campo Nome, digita
sql-server-test
.In Regione, seleziona us-east1.
In Zona, seleziona us-east1-b.
In Configurazione macchina, cambia Tipo di macchina in n1-standard-2 (2 vCPU).
Fai clic su Cambia accanto all'immagine del disco del libro.
Nel riquadro Disco di avvio, fai clic sulla scheda Immagini pubbliche.
Nell'elenco a discesa Sistema operativo, seleziona SQL Server su Windows Server.
Nell'elenco a discesa Versione, seleziona SQL Server 2022 Standard su Windows Server 2022 Datacenter.
Assicurati che siano impostati i seguenti valori:
- Il Tipo di disco di avvio è impostato su Disco permanente standard.
- Dimensioni (GB) impostate su 50.
Fai clic su Seleziona.
In Identità e accesso API, imposta Ambiti di accesso su Consenti accesso completo a tutte le API Cloud.
Fai clic su Crea.
Cloud Shell
Apri Cloud Shell.
Crea l'istanza SQL Server di test:
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
Puoi ignorare l'avviso relativo alle prestazioni del disco perché non hai bisogno di delle prestazioni per questo tutorial.
Connettiti all'istanza VM
Nella console Google Cloud, vai alla pagina Istanze VM.
Attendi circa 5 minuti affinché l'istanza VM sia pronta.
Per monitorare il processo di inizializzazione della VM, visualizzane il numero l'output della porta in Cloud Shell:
gcloud compute instances tail-serial-port-output sql-server-prod
Quando viene visualizzato il seguente messaggio, l'inizializzazione è completa.
Instance setup finished. sql-server-test is ready to use.
Premi Ctrl C per interrompere il monitoraggio della porta seriale.
Fai clic sul nome dell'istanza
sql-server-test
per visualizzare la VM dei dettagli dell'istanza.Nella sezione Accesso remoto, fai clic su Imposta password di Windows, quindi fai clic su. Imposta per creare il tuo account sul computer remoto.
Questo passaggio genera una password per te. Prendi nota della password oppure copiarlo in un file temporaneo sicuro.
Nella sezione Compute Engine della console Google Cloud, fai clic sul menu a discesa RDP e seleziona Scarica l'opzione file RDP per scaricare il file RDP per la tua istanza.
Utilizza questo file per connetterti all'istanza tramite un client RDP. Per ulteriori informazioni, vedi Client Microsoft Remote Desktop
Quando ti viene chiesto, inserisci la password appena generata e fai clic su OK.
Per accettare il certificato del server e accedere al tuo telecomando Su un'istanza Windows, fai clic su Continua.
Quando ti viene chiesto se vuoi che il PC sia rilevabile, fai clic su No.
Clonare il database utilizzando gli snapshot dei dischi di Compute Engine
Un modo per clonare un database SQL Server in esecuzione su Compute Engine è archiviare il database su un disco dati separato e usare snapshot di disco permanente per creare un clone di quel disco.
Snapshot di dischi permanenti di ottenere una copia point-in-time dei dati su disco. La pianificazione degli snapshot dei dischi per eseguire automaticamente il backup dei dati.
In questa sezione del tutorial imparerai a:
- Acquisisci uno snapshot del disco dati del server di produzione.
- Crea un nuovo disco dallo snapshot.
- Monta il nuovo disco sul server di test.
- Collega il database su questo disco a SQL Server nell'istanza di test.
Il seguente diagramma mostra come un database viene clonato utilizzando snapshot del disco.
Crea lo snapshot del disco
Console
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic sul nome dell'istanza
sql-server-prod
.Nella pagina Dettagli istanza VM, fai clic sul disco
sql-server-prod-data
.Fai clic su Crea snapshot.
Assegna allo snapshot il nome
sql-server-prod-data-snapshot
.In Località, seleziona A livello di regione.
Verifica che la regione sia impostata su
us-east1
(la stessa della VM) di Compute Engine).Seleziona l'opzione Abilita VSS.
Questa opzione utilizza Servizio di copia shadow del volume in Microsoft Windows per creare uno snapshot coerente.
Fai clic su Crea.
Dopo alcuni minuti, viene creato lo snapshot.
Cloud Shell
Apri Cloud Shell.
Crea uno snapshot del disco dati nella stessa zona dell'istanza VM:
gcloud compute disks snapshot sql-server-prod-data \ --snapshot-names=sql-server-prod-data-snapshot \ --guest-flush \ --zone="${ZONE}"
L'opzione
--guest-flush
utilizza il parametro Servizio di copia shadow del volume in Microsoft Windows per creare uno snapshot coerente. Dopo alcuni minuti, viene creato lo snapshot.
Collega lo snapshot del disco all'istanza di test
Devi creare un nuovo disco dati dallo snapshot che hai creato e poi
collegarlo all'istanza sql-server-test
.
Console
Nei passaggi successivi, creerai un nuovo disco permanente, utilizza lo snapshot del disco di produzione per i suoi contenuti, quindi collegalo al dell'istanza di test.
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic sul nome dell'istanza
sql-server-test
.Nella pagina Dettagli istanza VM, fai clic su Modifica.
Fai clic su Aggiungi nuovo disco add.
Assegna al nuovo disco il nome
sql-server-test-data
.Per Tipo di origine, seleziona Istantanea.
Per l'istanza
sql-server-prod-data-snapshot
che hai creato, seleziona Snapshot di origine.Assicurati che la modalità sia impostata su Lettura/scrittura.
Fai clic su Fine.
Cloud Shell
Apri Cloud Shell.
Crea un nuovo disco permanente utilizzando lo snapshot della versione di produzione disco per i suoi contenuti:
gcloud beta compute disks create sql-server-test-data \ --size=100GB \ --source-snapshot=sql-server-prod-data-snapshot \ --zone="${ZONE}"
Collega il nuovo disco all'istanza
sql-server-test
con la lettura e la scrittura autorizzazioni:gcloud compute instances attach-disk sql-server-test \ --disk=sql-server-test-data --mode=rw
Monta il nuovo disco dati in Windows
Il disco che hai creato è collegato all'istanza VM, ma è offline, è impostato su sola lettura. Per configurare il volume come lettura/scrittura e montabile, segui questi passaggi:
- Nella finestra del client RDP connessa a
sql-server-test
Ad esempio, fai clic sul pulsante Start sulla barra delle applicazioni di Windows, digitadiskpart
, quindi fai clic su diskpart per aprire DiskPart. - Quando ti viene chiesto di consentire all'app di apportare modifiche, fai clic su Sì.
Visualizza un elenco dei dischi collegati all'istanza:
list disk
L'output è il seguente:
Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 50 GB 0 B Disk 1 Offline 100 GB 0 B *
Il tuo disco dati (disco 1, 100 GB) è offline.
Seleziona il disco dati:
select disk 1
Porta il disco online:
online disk
Elenca i volumi disponibili:
list volume
L'output è il seguente:
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
Il volume 2 (99 GB) è il tuo volume di dati. La posizione è contrassegnata come Nascosto e non lettera dell'unità assegnata.
Seleziona il volume:
select volume 2
Cancella gli attributi impostati quando hai creato il volume dalla sezione istantanea:
attr volume clear readonly hidden nodefaultdriveletter shadowcopy
Questo comando rende il volume montabile.
Monta il volume come unità D:
assign letter=d
Esci da DiskPart:
exit
Reimpostare la proprietà e le autorizzazioni dei file
Perché hai creato il disco dati tramite l'acquisizione di uno snapshot su sql-server-prod
Ad esempio, gli ID utente per la proprietà e le autorizzazioni dei file sono diversi da
quelli sull'istanza sql-server-test
. Devi modificare la proprietà del
i file per un utente sull'istanza sql-server-test
e aggiorna le autorizzazioni in
Rendi i file leggibili per l'utente locale e l'utente MSSQLSERVER
.
- Nella finestra del client RDP connessa all'istanza
sql-server-test
, fai clic sul pulsante Start sulla barra delle applicazioni di Windows, quindi digitacmd
. - Apri l'app Prompt dei comandi come amministratore.
Imposta il proprietario dei file della cartella
sql-server-data
sul valore Utente del servizioMSSQLSERVER
:icacls d:\sql-server-data /setowner "nt service\mssqlserver" /t
Reimposta tutte le autorizzazioni per tutti i file nell'
sql-server-data
di primo livello cartella:icacls d:\sql-server-data /reset /t
Aggiorna gli elenchi di controllo dell'accesso (ACL) per la cartella
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
Disattiva l'ereditarietà dalla cartella principale dell'unità, in modo che si applicano le autorizzazioni precedenti:
icacls d:\sql-server-data /inheritancelevel:r
Esci dall'app Prompt dei comandi:
exit
L'istanza SQL Server e l'utente locale sull'istanza sql-server-test
ora possono accedere ai file del database.
Collega il database clonato
Ora colleghi il database clonato sull'unità D (data
) all'SQL Server di test
in esecuzione in un'istanza Compute Engine. Puoi collegare il database in modo interattivo utilizzando
tramite le procedure guidate di Microsoft SQL Server Management Studio o direttamente eseguendo un
il comando Transact-SQL.
Procedura guidata SSMS
- Nella sessione RDP connessa all'istanza
sql-server-test
, fai clic su sul pulsante Start sulla barra delle applicazioni di Windows, digitassms
, quindi seleziona Microsoft SQL Server Management Studio (Esegui come amministratore). - Fai clic su Connetti per connetterti al motore del database
sql-server-test
utilizzando l'autenticazione di Windows. - In Esplora oggetti, fai clic con il tasto destro del mouse su Database, quindi seleziona Allega.
- Nella procedura guidata Collega database, fai clic su Aggiungi.
- Vai alla directory
D:\sql-server-data\wideworldimporters
, fai clic il fileWideWorldImporters.mdf
e fai clic su OK. Fai clic su OK per collegare il database.
Dopo qualche istante, il database clonato viene collegato. Puoi fare clic Aggiorna refresh in Esplora oggetti per vedere se il database è elencato nella Albero dei database.
Transact SQL
- In una sessione RDP connessa alla tua istanza
sql-server-test
, fai clic su sul pulsante Start sulla barra delle applicazioni di Windows, digitassms
, quindi seleziona Microsoft SQL Server Management Studio (Esegui come amministratore). - Fai clic su Connetti per connetterti al motore del database
sql-server-prod
utilizzando l'autenticazione di Windows. - Seleziona File > Nuovo > Esegui una query con connessione corrente per aprire una finestra della nuova query.
Allega i file di dati e di log nel Directory
D:\sql-server-data\wideworldimporters
: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
Fai clic con il tasto destro del mouse sul codice della query e fai clic su Esegui.
Dopo qualche istante, il database clonato viene collegato. Puoi fare clic Aggiorna refresh in Esplora oggetti per verificare se il database è elencato nella sezione Database albero di Natale. Dopo aver collegato il database, puoi chiudere la finestra della query senza salvare.
Per verificare che il database di esempio funzioni, puoi eseguire una query.
In SQL Server Management Studio, seleziona File > Nuovo > Esegui query con Connessione corrente per aprire una nuova finestra di query, quindi copia codice seguente:
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;
Questa query recupera informazioni di riepilogo dalle 100 più recenti le fatture inviate.
Per eseguire la query, fai clic con il tasto destro del mouse sulla finestra della query e seleziona Esegui.
Nel riquadro Risultati vengono visualizzate le informazioni di riepilogo.
Ora che hai visto come clonare un database utilizzando snapshot di disco permanente,
potresti provare a clonare un database utilizzando il backup e ripristino. A
completare il tutorial per questo secondo approccio, è necessario eliminare
che hai clonato dall'istanza sql-server-test
.
Elimina il database clonato
Per eliminare il database clonato creato utilizzando gli snapshot dei dischi, esegui la i seguenti passaggi.
Procedura guidata SSMS
- Nella sessione RDP connessa alla tua istanza
sql-server-test
, apri Microsoft SQL Server Management Studio e poi connettitisql-server-test
motore del database. - In Esplora oggetti, espandi Database, fai clic con il tasto destro del mouse
WorldWideImporters
e seleziona Elimina. - Nella procedura guidata Elimina oggetto, assicurati che il pulsante Chiudi esistente di connessione sia selezionata.
- Fai clic su OK.
Transact SQL
- Nella sessione RDP connessa alla tua istanza
sql-server-test
, apri Microsoft SQL Server Management Studio e poi connettitisql-server-test
motore del database. Per chiudere tutte le connessioni al database
WideWorldImporters
ed eliminare copia lo script seguente in una finestra di nuova query, fai clic con il tasto destro del mouse quindi fai clic su Esegui:USE [master] GO ALTER DATABASE [WideWorldImporters] SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO DROP DATABASE [WideWorldImporters] GO
Dopo aver eliminato il database, puoi chiudere la finestra della query senza risparmiare tempo. Puoi fare clic su Aggiorna. refresh pollice Esplora oggetti per confermare che il database è stato eliminato.
Clonazione mediante backup e ripristino
Un secondo metodo per clonare un database SQL Server in esecuzione Compute Engine prevede l'uso delle risorse native di backup ripristinare. Con questo approccio, trasferisci il backup utilizzando di archiviazione ideale in Cloud Storage.
Questa sezione del tutorial utilizza risorse che hai creato nella Clonare il database utilizzando gli snapshot del disco di Compute Engine di questo tutorial. Se non hai completato la sezione, devi farlo prima di continuare.
In questa sezione del tutorial imparerai a:
- Creare un bucket Cloud Storage.
- Eseguire il backup del database sul server di produzione.
- Copia il file di backup dal server di produzione in Cloud Storage.
- Copia il file di backup da Cloud Storage sul server di test.
- Ripristina il backup sull'istanza di test.
Il seguente diagramma mostra come un database viene clonato trasferendo un backup utilizzando Cloud Storage.
Poiché è possibile concedere ai sistemi esterni a Google Cloud l'accesso Cloud Storage, puoi utilizzare questo approccio per clonare i database di SQL Server esterne.
Crea un bucket Cloud Storage
Devi creare un bucket Cloud Storage in cui archiviare i file di backup
mentre li trasferisci dall'istanza sql-server-prod
all'account
sql-server-test
istanza.
Console
Nella console Google Cloud, vai a Cloud Storage Pagina Browser.
Fai clic su Crea bucket.
Assegna al bucket il nome
project-name
-bucket.Sostituisci quanto segue:
project-name
: l'ID del tuo account Google Cloud progetto.
Espandi Scegli una classe di archiviazione predefinita, quindi seleziona A livello di regione.
In Località, seleziona us-east1.
Fai clic su Crea.
Cloud Shell
Apri Cloud Shell.
Crea un bucket Cloud Storage nella stessa regione della VM di Compute Engine:
gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
Esegui un backup point-in-time completo del database
Nel tuo ambiente di produzione, potresti già eseguire backup. Puoi utilizzare la modalità come base per la clonazione del database. In questo tutorial imparerai a creare backup solo copia in modo che non influisca sulle pianificazioni dei backup completi o incrementali esistenti.
Procedura guidata SSMS
- Nella sessione RDP connessa alla tua istanza
sql-server-prod
, apri Microsoft SQL Server Management Studio e poi connettitisql-server-prod
motore del database. - In Esplora oggetti, espandi Database, fai clic con il tasto destro del mouse
WorldWideImporters
e seleziona Tasks > Backup. - Nella procedura guidata Backup del database, assicurati che i seguenti valori
sono impostate:
- L'opzione Tipo di backup sia impostata su Completo.
- È selezionata l'opzione Backup solo copia.
- L'opzione Backup su è impostata su Disco.
- Per aggiungere un file di backup, fai clic su Aggiungi.
Nel campo Destination (Destinazione), inserisci
D:\sql-server-data\WideWorldImporters-copy.bak
.Seleziona la pagina Opzioni multimediali, quindi seleziona Sovrascrivi tutto set di backup esistenti.
Seleziona la pagina Opzioni di backup, quindi modifica l'opzione Imposta backup. compressione per Comprimi backup.
Per creare il backup, fai clic su OK.
La creazione del backup richiede alcuni minuti.
Transact SQL
- Nella sessione RDP connessa alla tua istanza
sql-server-prod
, apri Microsoft SQL Server Management Studio e poi connettitisql-server-prod
motore del database. Per eseguire un backup compresso solo copia del
WideWorldImporters
databasenel file
d:\sql-server-data\WideWorldImporters-copy.bak
, copia il seguente script in una nuova finestra di query, fai clic con il tasto destro del mouse sul codice quindi fai clic su Esegui.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
Attendi qualche minuto affinché il server crei il backup. Al termine del backup del database, puoi chiudere la finestra della query senza salvare.
Copia il file di backup in Cloud Storage
- Nella sessione RDP connessa alla tua istanza
sql-server-prod
, apri di Windows PowerShell. Copia il file di backup nel bucket Cloud Storage che hai creato precedenti:
gcloud storage cp d:\sql-server-data\WideWorldImporters-copy.bak "gs://$(gcloud config get-value project)-bucket/" --no-clobber
Esci da PowerShell.
exit
Copia il file di backup da Cloud Storage a sql-server-test
- Nella sessione RDP connessa alla tua istanza
sql-server-test
, apri un Finestra di Windows PowerShell. Copia il file di backup nel bucket Cloud Storage che hai creato precedenti:
gcloud storage cp "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" d:\sql-server-data\
Esci da PowerShell.
exit
Ora l'istanza di test dispone del backup completo della copia del database disco.
Ripristina il backup
Ora puoi ripristinare il backup della copia completa sull'unità D (data
) della
sql-server-test
istanza.
Procedura guidata SSMS
- Nella sessione RDP connessa alla tua istanza
sql-server-test
, apri Microsoft SQL Server Management Studio e poi connettitisql-server-test
motore del database. - In Esplora oggetti, fai clic con il tasto destro del mouse su Database, quindi seleziona Ripristina database.
- In Origine, seleziona il Dispositivo, quindi fai clic sul pulsante [...] pulsante accanto al nome del dispositivo.
- Nella finestra di dialogo Seleziona dispositivi di backup, seleziona File nella sezione Backup l'elenco dei tipi di media, quindi fai clic su Aggiungi.
- Nel selettore di file, vai a
D:\sql-server-data
e fai clic su il fileWideWorldImporters-copy.bak
e fai clic su OK. Fai clic su OK per chiudere la finestra di dialogo Seleziona dispositivi di backup.
La finestra di dialogo Ripristina database ora si compila con i dati sull'
WideWorldImporters
backup del database.In Seleziona una pagina, fai clic su File.
Seleziona Riposiziona tutti i file nella cartella.
Nei campi Cartella file di dati e Cartella file di log, inserisci
D:\sql-server-data\wideworldimporters
.Per avviare l'operazione di ripristino, fai clic su OK.
Al termine del processo, verrà visualizzato il messaggio
Database 'WideWorldImporters' restored successfully
.
Transact SQL
- Nella sessione RDP connessa alla tua istanza
sql-server-test
, apri Microsoft SQL Server Management Studio e poi connettitisql-server-test
motore del database. - Seleziona File > Nuovo > Esegui una query con connessione corrente per aprire una finestra della nuova query.
Copia il seguente comando T-SQL per avviare un ripristino dal backup copiato da Cloud Storage, ripristinando il database di log nella directory
D:\sql-server-data\wideworldimporters
: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
Fai clic con il tasto destro del mouse sul codice e fai clic su Esegui.
Dopo un paio di minuti, il ripristino del database viene completato. Puoi fare clic Aggiorna refresh in Esplora oggetti per verificare se il database è elencato nella sezione Database albero di Natale. Al termine del ripristino del database, puoi chiudere la query finestra senza salvare.
Per dimostrare che il database funziona, puoi eseguire una query.
In Microsoft SQL Management Studio, seleziona File > Nuovo > Esegui query con Connessione corrente per aprire una nuova finestra di query, quindi copia codice seguente:
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;
Questa query recupera informazioni di riepilogo dalle 100 più recenti le fatture inviate.
Fai clic con il tasto destro del mouse sulla finestra della query e fai clic su Esegui.
Nel riquadro Risultati vengono visualizzate le informazioni di riepilogo.
Utilizzo di Cloud SQL come destinazione di clonazione
Se il database di destinazione è ospitato su Cloud SQL e l'origine su Compute Engine, l'unico meccanismo di clonazione supportato è eseguendo il backup del database in Cloud Storage e ripristinando in Cloud SQL.
Per questo tutorial, riutilizzerai il backup creato durante la sezione precedente.
Crea un'istanza Cloud SQL per SQL Server
Apri Cloud Shell.
Crea un'istanza Cloud SQL per SQL Server che esegue lo stesso database dell'istanza
sql-server-prod
:gcloud sql instances create sqlserver-cloudsql \ --database-version=SQLSERVER_2022_STANDARD \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --region=${REGION}
Viene creata un'istanza con utente root di
sqlserver
e password disqlserver12@
.
Aggiorna autorizzazioni degli oggetti
È necessario impostare le autorizzazioni corrette su entrambi i bucket Cloud Storage
e l'oggetto di backup, in modo che l'account di servizio Cloud SQL sia in grado di leggerli.
Queste autorizzazioni vengono impostate automaticamente quando utilizzi la console Google Cloud per
importa l'oggetto o puoi impostarlo utilizzando i comandi gcloud
.
Apri Cloud Shell.
Imposta una variabile di ambiente contenente l'indirizzo dell'account di servizio del tuo Istanza Cloud SQL:
CLOUDSQL_SA="$(gcloud sql instances describe sqlserver-cloudsql --format='get(serviceAccountEmailAddress)')"
Aggiungi l'account di servizio al criterio IAM del bucket come lettore e scrittore:
gcloud storage buckets add-iam-policy-binding "gs://$(gcloud config get-value project)-bucket/" \ --member=user:"${CLOUDSQL_SA}" --role=roles/storage.objectUser
Importa il database esportato
Apri Cloud Shell.
Importa il file esportato nell'istanza Cloud SQL:
gcloud sql import bak sqlserver-cloudsql \ "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" \ --database WideWorldImporters
Quando richiesto, inserisci
y
.Installa il pacchetto di strumenti di SQL Server:
sudo apt install -y mssql-tools
Se accetti i termini di licenza, inserisci
yes
quando richiesto.Questi strumenti ti consentono di connetterti a Cloud SQL a Cloud Shell per permetterti di eseguire query su Cloud SQL in esecuzione in un'istanza Compute Engine.
Collega il proxy Cloud SQL alla tua istanza SQL Server:
CONNECTION_NAME=$(gcloud sql instances describe sqlserver-cloudsql --format='value(connectionName)') cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
Per verificare che il database clonato funzioni, esegui una query:
/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;'
Quando richiesto, inserisci la password dell'utente
sqlserver
del server di databasesqlserver-cloudsql
(sqlserver12@
).Questa query recupera informazioni di riepilogo dalle 100 più recenti le fatture inviate.
L'output è il seguente:
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 ...
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi per in questo tutorial, puoi eliminare il progetto Google Cloud che hai creato per questo tutorial.
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Scopri come utilizzare Backup di Microsoft SQL Server per il recupero point-in-time su Compute Engine.
- Scopri di più sulla best practice per l'esecuzione di istanze SQL Server su Compute Engine.
- Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.