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 copia è indipendente dal database esistente e viene conservata come snapshot in un determinato momento. Puoi utilizzare un database clonato per vari scopi senza inserire un carico sul server di produzione o mettere a rischio l'integrità dei dati di produzione. Ecco alcune di queste finalità:
- Esecuzione di query analitiche
- Test di carico o di integrazione delle 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. La tabella seguente evidenzia alcuni problemi chiave.
Problema | Metodo 1: snapshot dei dischi | Metodo 2: backup e ripristino mediante Cloud Storage |
---|---|---|
Spazio su disco aggiuntivo richiesto sulle istanze SQL Server | Non è richiesto spazio su disco aggiuntivo | 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 dei file di backup |
Durata della clonazione | Relativamente veloce per database di grandi dimensioni | Relativamente lento 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 di comandi relativamente semplici per la clonazione |
Può sfruttare i sistemi di backup esistenti | Sì, se il sistema di backup utilizza gli snapshot dei dischi 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 | Coerenti al momento dello snapshot | Coerente al punto del backup |
Questo tutorial presuppone che tu abbia dimestichezza con l'amministrazione di sistema di Microsoft Windows, PowerShell e Microsoft SQL Server utilizzando SQL Server Management Studio di Microsoft.
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 gli snapshot dei dischi Compute Engine.
- Scopri come clonare un database SQL Server trasferendo un backup con di archiviazione ideale in Cloud Storage.
Costi
In questo documento utilizzi 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
- 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.
- 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) a tua scelta. Per saperne di più, consulta Client di 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 calcolo con quanto segue:
- 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. Clona 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 collegati a un'istanza e dal numero totale di vCPU nell'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, imposta Tipo di macchina su 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 l'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 Dimensione (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
: il nome della tua VPCSUBNET_NAME
: il 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 relativo alle prestazioni del disco perché per questo tutorial non sono necessarie prestazioni elevate.
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, visualizza l'output della porta seriale in Cloud Shell:
gcloud compute instances tail-serial-port-output sql-server-prod
Quando viene visualizzato il seguente messaggio, l'inizializzazione è completata.
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.
In questo passaggio viene generata una password. 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 l'opzione Scarica il file RDP per scaricare il file RDP per l'istanza.
Utilizza questo file per connetterti all'istanza utilizzando un client RDP. Per ulteriori informazioni, vedi Client Microsoft Remote Desktop
Quando richiesto, inserisci la password appena generata e 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 vuoi che il computer possa essere rilevato da altri PC e dispositivi della rete, fai clic su No.
Configurare il disco aggiuntivo
Il secondo disco collegato all'istanza di produzione serve per l'archiviazione di produzione. Questo disco è vuoto, quindi devi partizionarlo, formattarlo e montarlo.
- 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 una 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 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 sul disco 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 clonare.
Per creare la directory e scaricare il file di backup:
Nella sessione RDP, fai clic sul pulsante Avvio sulla barra delle app 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 sul disco 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 sul disco D (data
) in modo interattivo utilizzando le automazioni di Microsoft 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). - Dopo l'avvio dell'app, fai clic su Connetti per connetterti al motore del database
sql-server-prod
utilizzando l'autenticazione Windows. - In Esplora oggetti, fai clic con il tasto destro del mouse su Database e 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 File sia selezionato per Tipo di supporto di backup e poi 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.
Inserisci
D:\sql-server-data\wideworldimporters
sia nel campo Cartella file di dati sia nel campo Cartella file di log.Fai clic su OK per avviare l'operazione di ripristino.
Dopo un paio di minuti, riceverai una notifica che ti informa che il database è stato ripristinato.
Transact-SQL
- Nella sessione RDP, fai clic sul pulsante Avvio sulla barra delle app di Windows, digita
ssms
e seleziona Microsoft SQL Server Management Studio (Esegui come amministratore). - Dopo l'avvio dell'app, fai clic su Connetti per connetterti al motore del database
sql-server-prod
utilizzando l'autenticazione Windows. - Seleziona File > Nuovo > Query con connessione corrente 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. Puoi fare clic su Aggiorna refresh in Esplora oggetti per verificare se il database è elencato nella struttura a albero Database. Al termine del ripristino del database, 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 le informazioni di riepilogo delle 100 fatture inviate più di recente.
Fai clic con il tasto destro del mouse sulla finestra della query e poi 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, imposta Tipo di macchina su 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 l'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é per questo tutorial non sono necessarie prestazioni elevate.
Connettiti all'istanza VM
Nella console Google Cloud, vai alla pagina Istanze VM.
Attendi circa 5 minuti per la preparazione dell'istanza VM.
Per monitorare il processo di inizializzazione della VM, visualizza l'output della porta seriale in Cloud Shell:
gcloud compute instances tail-serial-port-output sql-server-prod
Quando viene visualizzato il seguente messaggio, l'inizializzazione è completata.
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 pagina Dettagli istanza VM.In Accesso remoto, fai clic su Imposta password di Windows e poi su Imposta per creare il tuo account sulla macchina remota.
Questo passaggio genera una password per te. Prendi nota della password o copiala 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 richiesto, inserisci la password appena generata, quindi 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.
Clonazione del database utilizzando gli snapshot dei dischi di Compute Engine
Un modo per clonare un database SQL Server in esecuzione su Compute Engine è memorizzare il database su un disco di dati separato e utilizzare gli snapshot dei dischi permanenti per creare un clone del 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 Regionale.
Verifica che la regione sia impostata su
us-east1
(la stessa della VM) .Seleziona l'opzione Attiva 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, lo snapshot viene creato.
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 servizio 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 il nome
sql-server-test-data
al nuovo disco.In Tipo di origine, seleziona Snapshot.
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 del disco di produzione per i relativi 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 autorizzazioni di lettura/scrittura: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 e il volume è impostato su di sola lettura. Per configurare il volume come leggi/scrivi e montabile, segui questi passaggi:
- Nella finestra del client RDP connesso all'istanza
sql-server-test
, fai clic sul pulsante Avvia nella barra delle app di Windows, digitadiskpart
e poi 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 di dati:
select disk 1
Connetti il disco alla rete:
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
Poiché hai creato il disco dati acquisendo uno snapshot nell'istanza sql-server-prod
, gli ID utente per la proprietà e le autorizzazioni dei file sono diversi da quelli dell'istanza sql-server-test
. Devi modificare la proprietà dei file assegnandola a un utente dell'istanza sql-server-test
e aggiornare le autorizzazioni per rendere 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 l'utente servizio
MSSQLSERVER
come proprietario dei file nella cartellasql-server-data
: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 dell'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 le procedure guidate di Microsoft SQL Server Management Studio o direttamente eseguendo un comando Transact-SQL.
Assistente 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 alcuni istanti, il database clonato viene collegato. Puoi fare clic su Aggiorna refresh in Esplora oggetti per verificare se il database è elencato nella struttura a albero Database.
Transact-SQL
- In una sessione RDP connessa all'istanza
sql-server-test
, fai clic sul pulsante Avvio sulla barra delle app di Windows, digitassms
e poi 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 > Query con connessione corrente per aprire una nuova finestra di query.
Allega i file di dati e di log nella 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 alcuni istanti, 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 > 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 le informazioni di riepilogo delle 100 fatture inviate più di recente.
Per eseguire la query, fai clic con il tasto destro del mouse sulla finestra della query e seleziona Esegui.
Il riquadro Risultati mostra 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 la casella di controllo Chiudi le connessioni esistenti sia selezionata.
- Fai clic su OK.
Transact-SQL
- Nella sessione RDP connessa all'istanza
sql-server-test
, apri Microsoft SQL Server Management Studio e poi connettiti al motore del databasesql-server-test
. 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 su Compute Engine è utilizzare il backup e il ripristino di SQL Server nativo. Con questo approccio, trasferisci il backup utilizzando Cloud Storage.
Questa sezione del tutorial utilizza le risorse che hai creato nella sezione Clonazione del database utilizzando gli snapshot dei dischi 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.
- Esegui 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 al server di test.
- Ripristina il backup nell'istanza di test.
Il seguente diagramma mostra come viene clonato un database trasferendo un backup utilizzando Cloud Storage.
Poiché è possibile concedere l'accesso a Cloud Storage ai sistemi esterni a Google Cloud, puoi utilizzare questo approccio per clonare i database dalle istanze SQL Server esterne.
Crea un bucket Cloud Storage
Devi creare un bucket Cloud Storage che memorizzi i file di backup mentre li trasferisci dall'istanza sql-server-prod
all'istanza sql-server-test
.
Console
Nella console Google Cloud, vai alla pagina Browser in Cloud Storage.
Fai clic su Crea bucket.
Assegna al bucket il nome
project-name
-bucket.Sostituisci quanto segue:
project-name
: l'ID del tuo progetto Google Cloud.
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 completo point-in-time del database
Nel tuo ambiente di produzione potresti già eseguire dei backup. Puoi utilizzare questi backup come base per clonare il database. In questo tutorial viene creato un backup di sola 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 sul database
WorldWideImporters
e seleziona Attività > Backup. - Nella procedura guidata Backup del database, assicurati che i seguenti valori
sono impostate:
- L'elemento Tipo di backup è impostato 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 di sola copia del
WideWorldImporters
databasenel file
d:\sql-server-data\WideWorldImporters-copy.bak
, copia lo script seguente in una nuova finestra di query, fai clic con il tasto destro del mouse sul codice e poi 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 all'istanza
sql-server-prod
, apri una finestra di Windows PowerShell. Copia il file di backup nel bucket Cloud Storage che hai creato in precedenza:
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 all'istanza
sql-server-test
, apri una finestra Windows PowerShell. Copia il file di backup nel bucket Cloud Storage che hai creato in precedenza:
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 e seleziona Ripristina database.
- Per Origine, seleziona il Dispositivo e poi fai clic sul pulsante [...] accanto al nome del dispositivo.
- Nella finestra di dialogo Seleziona dispositivi di backup, seleziona File nell'elenco Tipo di supporto di backup e poi fai clic su Aggiungi.
- Nel selettore dei file, vai a
D:\sql-server-data
, fai clic sul fileWideWorldImporters-copy.bak
e poi su OK. Fai clic su OK per chiudere la finestra di dialogo Seleziona dispositivi di backup.
La finestra di dialogo Ripristina database è ora compilata con i dati relativi al backup del database
WideWorldImporters
.In Seleziona una pagina, fai clic su File.
Seleziona Ricolloca 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 all'istanza
sql-server-test
, apri Microsoft SQL Server Management Studio e poi connettiti al motore del databasesql-server-test
. - Seleziona File > Nuovo > Query con connessione corrente per aprire una nuova finestra di query.
Copia il seguente comando T-SQL per avviare un ripristino dal file di backup che hai copiato da Cloud Storage, ripristinando il database e il file 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 poi su Esegui.
Dopo un paio di minuti, il ripristino del database viene completato. Puoi fare clic su Aggiorna refresh in Esplora oggetti per verificare se il database è elencato nella struttura Database. Al termine del ripristino del database, puoi chiudere la query finestra senza salvare.
Per dimostrare che il database è funzionale, puoi eseguire una query.
In Microsoft SQL Management Studio, seleziona File > Nuovo > 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.
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, riutilizza il backup creato nella sezione precedente.
Crea un'istanza Cloud SQL per SQL Server
Apri Cloud Shell.
Crea un'istanza Cloud SQL per SQL Server che esegue la stessa versione del 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
sqlserver
e passwordsqlserver12@
.
Aggiorna le 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 degli strumenti SQL Server:
sudo apt install -y mssql-tools
Se accetti i termini della licenza, inserisci
yes
quando richiesto.Utilizza questi strumenti per connetterti a Cloud SQL da Cloud Shell in modo da poter eseguire query sull'istanza Cloud SQL.
Connetti il proxy Cloud SQL all'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 sia funzionale, 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 relativi alla in questo tutorial, puoi eliminare il progetto Google Cloud che hai creato per questo tutorial.
- 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.
Passaggi successivi
- Scopri le best practice per l'esecuzione di istanze SQL Server su Compute Engine.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.