Este tutorial mostra duas formas de clonar uma base de dados do Microsoft SQL Server em execução no Compute Engine. Um método usa instantâneos do Persistent Disk. O outro método usa o restauro e a cópia de segurança nativos do SQL Server, transferindo a cópia de segurança através do Cloud Storage. O Cloud Storage é o serviço de armazenamento de objetos da Google CloudGoogle Cloud. Oferece uma forma simples, com segurança melhorada, duradoura e altamente disponível de armazenar ficheiros.
A clonagem é o processo de copiar uma base de dados online para outro servidor. A cópia é independente da base de dados existente e é preservada como uma imagem instantânea num determinado momento. Pode usar uma base de dados clonada para vários fins sem sobrecarregar o servidor de produção nem comprometer a integridade dos dados de produção. Alguns destes fins incluem o seguinte:
- Executar consultas analíticas
- Testes de carga ou testes de integração das suas apps
- Extração de dados para preencher armazéns de dados
- Executar experiências nos dados
Cada método de clonagem descrito neste tutorial tem vantagens e desvantagens. O método ideal para si depende da sua situação. A tabela seguinte realça alguns problemas importantes.
Problema | Método 1: instantâneos de discos | Método 2: faça uma cópia de segurança e restaure através do armazenamento na nuvem |
---|---|---|
Espaço em disco adicional necessário nas instâncias do SQL Server | Não é necessário espaço em disco adicional | Espaço adicional necessário para armazenar o ficheiro de cópia de segurança durante a criação e o restauro |
Carga adicional nas instâncias do SQL Server de origem durante a clonagem | Nenhuma carga adicional | Carga adicional na CPU e na E/S ao criar e carregar ficheiros de cópia de segurança |
Duração da clonagem | Relativamente rápido para grandes bases de dados | Relativamente lento para bases de dados grandes |
Pode clonar a partir de instâncias do SQL Server externas ao Google Cloud | Não | Sim |
Complexidade | Uma sequência complexa de comandos para anexar discos clonados | Um conjunto de comandos relativamente simples para clonar |
Pode tirar partido dos sistemas de cópia de segurança existentes | Sim, se o sistema de cópia de segurança usar Google Cloud instantâneos de disco | Sim, se o sistema de cópia de segurança escrever ficheiros de cópia de segurança nativos do SQL Server no Cloud Storage |
Nível de detalhe da clonagem | Só pode clonar discos inteiros | Só pode clonar a base de dados especificada |
Consistência dos dados | Consistente no momento do instantâneo | Consistente no ponto da cópia de segurança |
Este tutorial pressupõe que tem conhecimentos de administração do sistema Microsoft Windows, do PowerShell e da administração do Microsoft SQL Server através do SQL Server Management Studio da Microsoft.
Objetivos
- Saiba como executar uma instância do SQL Server no Google Cloud.
- Saiba como criar uma base de dados de demonstração num disco secundário.
- Saiba como clonar uma base de dados do SQL Server através de instantâneos de disco do Compute Engine.
- Saiba como clonar uma base de dados do SQL Server transferindo uma cópia de segurança através do Cloud Storage.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
- Compute Engine
- Cloud Storage
- Microsoft Windows and SQL server licenses
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Antes de começar
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Ative a API Compute Engine. Ative a API
- Utiliza o navegador Google Chrome.
- Instale um cliente do protocolo de ambiente de trabalho remoto (RDP) à sua escolha. Para mais informações, consulte o artigo Clientes do Ambiente de Trabalho Remoto da Microsoft. Se já tiver um cliente RDP instalado, pode ignorar esta tarefa.
Certifique-se de que cumpre estes pré-requisitos adicionais:
Configurar o ambiente
Para concluir este tutorial, tem de configurar o seu ambiente de computação com o seguinte:
- Uma instância do SQL Server no Compute Engine (denominada
sql-server-prod
) para representar o servidor de base de dados de produção. - Um disco adicional (denominado
sql-server-prod-data
) associado ao seu servidor de produção para armazenar a base de dados de produção. - Uma cópia da base de dados de exemplo do SQL Server Wide World Importers para simular a base de dados de produção que quer clonar.
- Uma instância do SQL Server no Compute Engine denominada
sql-server-test
para representar o servidor de base de dados de testes. Clona a sua base de dados neste servidor.
O diagrama seguinte ilustra esta arquitetura.
Crie a instância de VM de produção
Para simular um ambiente de produção, configura uma instância de VM do Compute Engine que executa o SQL Server no Windows Server.
A instância de VM para este tutorial usa dois discos: um disco de 50 GB para o SO e as contas de utilizador, e um disco de 100 GB para o armazenamento da base de dados.
No Compute Engine, a utilização de discos separados não oferece vantagens de desempenho. O desempenho do disco é determinado pela capacidade de armazenamento total de todos os discos anexados a uma instância e pelo número total de vCPUs na sua instância de VM. Por conseguinte, a base de dados e o ficheiro de registo podem residir no mesmo disco.
Consola
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique em Criar.
No campo Nome, escreva
sql-server-prod
.Para Região, selecione us-east1.
Para Zona, selecione us-east1-b.
Em Configuração da máquina, altere o Tipo de máquina para n1-standard-2 (2 vCPU).
Junto à descrição do Disco de arranque, clique em Alterar.
No painel Disco de arranque, clique no separador Imagens públicas.
Na lista pendente Sistema operativo, selecione SQL Server no Windows Server.
Na lista pendente Versão, selecione SQL Server 2022 Standard no Windows Server 2022 Datacenter.
Certifique-se de que os seguintes valores estão definidos:
- O tipo de disco de arranque está definido como disco persistente padrão.
- O tamanho (GB) está definido como 50.
Clique em Selecionar.
Em Identidade e acesso à API, defina Âmbitos de acesso como Permitir acesso total a todas as APIs Google Cloud.
Expanda Gestão, segurança, discos, trabalhar em rede, arrendamento único.
Clique no separador Discos.
Clique em Adicionar novo disco add.
No campo Nome, escreva
sql-server-prod-data
.No campo Tamanho (GB), escreva
100
.Clique em Concluído.
Clique em Criar.
Cloud Shell
Abra o Cloud Shell.
Inicialize as seguintes variáveis:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Onde:
VPC_NAME
: nome da sua VPCSUBNET_NAME
: nome da sua sub-rede
Defina o seu ID do projeto predefinido:
gcloud config set project
PROJECT_ID
Substitua
PROJECT_ID
pelo ID do seu Google Cloud projeto.Predefina a sua região:
gcloud config set compute/region
REGION
Substitua
REGION
pelo ID da região na qual quer fazer a implementação.Predefina a sua zona:
gcloud config set compute/zone
ZONE
Substitua
ZONE
pelo ID da zona na qual quer fazer a implementação.Crie uma instância do Compute Engine através da imagem da app para o SQL Server 2022 Standard no 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
Este comando concede à instância acesso total às Google Cloud APIs, cria um disco secundário de 100 GB e anexa o disco à instância. Ignore o aviso de desempenho do disco porque não precisa de um elevado desempenho para este tutorial.
Estabeleça ligação à instância de VM
Na Google Cloud consola, aceda à página Instâncias de VM.
Aguarde cerca de 5 minutos até que a instância de VM esteja pronta.
Para monitorizar o processo de inicialização da VM, veja a respetiva saída da porta de série no Cloud Shell:
gcloud compute instances tail-serial-port-output sql-server-prod
Quando vir a seguinte mensagem, a inicialização está concluída.
Instance setup finished. sql-server-prod is ready to use.
Prima Control+C para parar a monitorização da porta série.
Clique no nome da instância
sql-server-prod
para abrir a página de detalhes da instância de VM.Em Acesso remoto, clique em Definir palavra-passe do Windows e, de seguida, clique em Definir para criar a sua conta no computador remoto.
Este passo gera uma palavra-passe para si. Tome nota da palavra-passe ou copie-a para um ficheiro temporário seguro.
Na secção Compute Engine da Google Cloud consola, clique no menu pendente RDP e selecione a opção Transferir o ficheiro RDP para transferir o ficheiro RDP da sua instância.
Use este ficheiro para estabelecer ligação à instância através de um cliente RDP. Para mais informações, consulte o artigo Clientes do Ambiente de Trabalho Remoto da Microsoft.
Quando lhe for pedido, introduza a palavra-passe que acabou de gerar e, de seguida, clique em OK.
Para aceitar o certificado do servidor e iniciar sessão na sua instância remota do Windows, clique em Continuar.
Quando lhe for perguntado se quer que o seu computador seja detetável por outros PCs e dispositivos na rede, clique em Não.
Configure o disco adicional
O segundo disco associado à instância de produção destina-se a armazenar a sua base de dados de produção. Este disco está em branco, pelo que tem de criar partições, formatá-lo e montá-lo.
- Numa sessão RDP ligada à sua instância
sql-server-prod
, clique no botão Iniciar na barra de tarefas do Windows, escrevadiskpart
e, de seguida, clique em diskpart para abrir o DiskPart. - Quando lhe for pedido que permita que a app faça alterações, clique em Sim.
Apresente uma lista de discos anexados à sua instância:
list disk
O resultado é o seguinte:
Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 50 GB 0 B Disk 1 Online 100 GB 100 GB
O Disco 1 (100 GB) é o seu disco de dados.
Selecione o disco de dados:
select disk 1
Inicialize o disco:
clean
Crie uma GUID Partition Table:
convert gpt
Crie a partição de dados usando o disco inteiro:
create partition primary
Liste os volumes disponíveis:
list volume
O resultado é o seguinte:
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
O volume 2 (99 GB) é o seu disco de dados.
Selecione o volume:
select volume 2
Formate a partição com o sistema de ficheiros NTFS e atribua-lhe a etiqueta
data
:format quick fs=ntfs label=data
Monte o disco como unidade D:
assign letter=d
Sair do DiskPart:
exit
Transfira a base de dados de exemplo
Para configurar o seu ambiente para este exercício de clonagem, tem de fazer o seguinte:
- Crie uma estrutura de diretórios na unidade D (
data
) para armazenar a sua base de dados. - Transfira o ficheiro de cópia de segurança completa da base de dados de exemplo do SQL Server da Wide World Importers. Esta base de dados simula a base de dados de produção que quer clonar.
Para criar o diretório e transferir o ficheiro de cópia de segurança, siga estes passos:
Na sessão RDP, clique no botão Iniciar na barra de tarefas do Windows, escreva
PowerShell
e, de seguida, selecione a app Windows PowerShell.Na linha de comandos do PowerShell, crie uma estrutura de diretórios para o armazenamento da base de dados:
mkdir D:\sql-server-data\wideworldimporters
Transfira o ficheiro de cópia de segurança para a unidade 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
Restaure a base de dados de amostra
Tem de restaurar a base de dados de exemplo na unidade D (data
) de forma interativa através dos assistentes do SQL Server Management Studio (SSMS) da Microsoft ou diretamente executando um comando Transact-SQL.
SSMS Wizard
- Na sessão RDP, clique no botão Iniciar na barra de tarefas do Windows,
escreva
ssms
e, de seguida, selecione Microsoft SQL Server Management Studio (Executar como administrador). - Depois de iniciar a app, clique em Associar para associar ao motor de base de dados
sql-server-prod
através da autenticação do Windows. - No Object Explorer, clique com o botão direito do rato em Databases e, de seguida, selecione Restore Database.
- Em Origem, selecione Dispositivo e, de seguida, clique no botão [...] junto ao nome do dispositivo.
- Na caixa de diálogo Selecionar dispositivos de cópia de segurança, certifique-se de que Ficheiro está selecionado para Tipo de suporte de cópia de segurança e, de seguida, clique em Adicionar.
- No seletor de ficheiros, procure
D:\sql-server-data
, clique no ficheiroWideWorldImporters-Full.bak
e, de seguida, clique em OK. Clique em OK para fechar a caixa de diálogo Selecionar dispositivos de cópia de segurança.
A caixa de diálogo Restaurar base de dados está agora preenchida com dados acerca da cópia de segurança da base de dados da Wide World Importers.
Em Selecionar uma página, clique em Ficheiros.
Selecione a caixa de verificação Mover todos os ficheiros para a pasta.
Nos campos Pasta do ficheiro de dados e Pasta do ficheiro de registo, introduza
D:\sql-server-data\wideworldimporters
.Clique em OK para iniciar a operação de restauro.
Após alguns minutos, recebe uma notificação a indicar que a base de dados foi restaurada.
Transact-SQL
- Na sessão RDP, clique no botão Iniciar na barra de tarefas do Windows,
escreva
ssms
e, de seguida, selecione Microsoft SQL Server Management Studio (Executar como administrador). - Depois de iniciar a app, clique em Associar para associar ao motor de base de dados
sql-server-prod
através da autenticação do Windows. - Selecione Ficheiro > Novo > Consulta com ligação atual para abrir uma nova janela de consulta.
Inicie um restauro a partir do ficheiro de cópia de segurança que transferiu:
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
Este comando restaura a base de dados e o ficheiro de registo no diretório
D:\sql-server-data\wideworldimporters
.Clique com o botão direito do rato no código da consulta e clique em Executar.
Aguarde alguns minutos para que a restauração da base de dados seja concluída. Pode clicar em Atualizar refresh no Explorador de objetos para ver se a base de dados está listada na árvore de bases de dados. Após a conclusão do restauro da base de dados, pode fechar a janela de consulta sem guardar.
Para verificar se a base de dados de exemplo está funcional, pode executar uma consulta.
No Microsoft SQL Server Management Studio, selecione Ficheiro > Novo > Consulta com ligação atual para abrir uma nova janela de consulta e, de seguida, copie o seguinte código:
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;
Esta consulta obtém informações de resumo das 100 faturas emitidas mais recentemente.
Clique com o botão direito do rato na janela de consulta e clique em Executar.
O painel Resultados apresenta as informações de resumo.
Crie a instância de VM de teste
Nesta secção, cria uma instância do SQL Server denominada sql-server-test
como destino da base de dados clonada. A configuração desta instância é idêntica à instância de produção. No entanto, não cria um segundo disco de dados. Em vez disso, anexa o disco de dados mais tarde neste tutorial.
Consola
Aceda à página Instâncias de VM.
Clique em Criar.
No campo Nome, escreva
sql-server-test
.Para Região, selecione us-east1.
Para Zona, selecione us-east1-b.
Em Configuração da máquina, altere o Tipo de máquina para n1-standard-2 (2 vCPU).
Junto à imagem Reservar disco, clique em Alterar.
No painel Disco de arranque, clique no separador Imagens públicas.
Na lista pendente Sistema operativo, selecione SQL Server no Windows Server.
Na lista pendente Versão, selecione SQL Server 2022 Standard no Windows Server 2022 Datacenter.
Certifique-se de que os seguintes valores estão definidos:
- O tipo de disco de arranque está definido como disco persistente padrão.
- O tamanho (GB) está definido como 50.
Clique em Selecionar.
Em Identidade e acesso à API, defina os Âmbitos de acesso como Permitir acesso total a todas as APIs Google Cloud.
Clique em Criar.
Cloud Shell
Abra o Cloud Shell.
Crie a instância do SQL Server de teste:
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
Pode ignorar o aviso de desempenho do disco porque não precisa de um desempenho elevado para este tutorial.
Estabeleça ligação à instância de VM
Na Google Cloud consola, aceda à página Instâncias de VM.
Aguarde cerca de 5 minutos até que a instância de VM esteja pronta.
Para monitorizar o processo de inicialização da VM, veja a respetiva saída da porta de série no Cloud Shell:
gcloud compute instances tail-serial-port-output sql-server-prod
Quando vir a seguinte mensagem, a inicialização está concluída.
Instance setup finished. sql-server-test is ready to use.
Prima Control+C para parar a monitorização da porta série.
Clique no nome da instância
sql-server-test
para apresentar a página de detalhes da instância de VM.Em Acesso remoto, clique em Definir palavra-passe do Windows e, de seguida, clique em Definir para criar a sua conta no computador remoto.
Este passo gera uma palavra-passe para si. Anotar a palavra-passe ou copiá-la para um ficheiro temporário seguro.
Na secção Compute Engine da Google Cloud consola, clique no menu pendente RDP e selecione a opção Transferir o ficheiro RDP para transferir o ficheiro RDP da sua instância.
Use este ficheiro para estabelecer ligação à instância através de um cliente RDP. Para mais informações, consulte o artigo Clientes do Ambiente de Trabalho Remoto da Microsoft.
Quando lhe for pedido, introduza a palavra-passe que acabou de gerar e, de seguida, clique em OK.
Para aceitar o certificado do servidor e iniciar sessão na sua instância do Windows remota, clique em Continuar.
Quando lhe for perguntado se quer que o PC seja detetável, clique em Não.
Clonar a base de dados através de instantâneos de disco do Compute Engine
Uma forma de clonar uma base de dados do SQL Server em execução no Compute Engine é armazenar a base de dados num disco de dados separado e usar instantâneos de discos persistentes para criar um clone desse disco.
Os instantâneos do Persistent Disk permitem-lhe obter uma cópia dos dados no disco num determinado momento. O agendamento de instantâneos de disco é uma forma de fazer automaticamente uma cópia de segurança dos seus dados.
Nesta secção do tutorial, faz o seguinte:
- Tire um instantâneo do disco de dados do servidor de produção.
- Crie um novo disco a partir da captura de ecrã.
- Monte o novo disco no servidor de teste.
- Anexe a base de dados neste disco ao SQL Server na instância de teste.
O diagrama seguinte mostra como uma base de dados é clonada através de instantâneos de disco.
Crie o instantâneo do disco
Consola
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique no nome da instância
sql-server-prod
.Na página Detalhes da instância de VM, clique no disco
sql-server-prod-data
.Clique em Criar instantâneo.
Atribua um nome ao instantâneo
sql-server-prod-data-snapshot
.Para Localização, selecione Regional.
Verifique se a região está definida como
us-east1
(a mesma que as suas instâncias de VM).Selecione a opção Ativar VSS.
Esta opção usa o Volume Shadow Copy Service no Microsoft Windows para criar uma captura de ecrã consistente.
Clique em Criar.
Após alguns minutos, a sua foto instantânea é criada.
Cloud Shell
Abra o Cloud Shell.
Crie um instantâneo do disco de dados na mesma zona que a instância de VM:
gcloud compute disks snapshot sql-server-prod-data \ --snapshot-names=sql-server-prod-data-snapshot \ --guest-flush \ --zone="${ZONE}"
A opção
--guest-flush
usa o Volume Shadow Copy Service no Microsoft Windows para criar uma captura instantânea consistente. Após alguns minutos, a sua foto instantânea é criada.
Anexe a imagem instantânea do disco à instância de teste
Tem de criar um novo disco de dados a partir da captura de ecrã que criou e, em seguida, anexá-lo à instância sql-server-test
.
Consola
Nos passos seguintes, cria um novo disco persistente, usa a captura de ecrã do disco de produção para o respetivo conteúdo e, em seguida, anexa o disco à instância de teste.
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique no nome da instância
sql-server-test
.Na página Detalhes da instância de VM, clique em Editar.
Clique em Adicionar novo disco add.
Atribua um nome ao novo disco
sql-server-test-data
.Para Tipo de origem, selecione Instantâneo.
Para a instância
sql-server-prod-data-snapshot
que criou, selecione o Instantâneo de origem.Certifique-se de que o Modo está definido como Leitura/escrita.
Clique em Concluído.
Cloud Shell
Abra o Cloud Shell.
Crie um novo Persistent Disk usando o instantâneo do disco de produção para o respetivo conteúdo:
gcloud beta compute disks create sql-server-test-data \ --size=100GB \ --source-snapshot=sql-server-prod-data-snapshot \ --zone="${ZONE}"
Anexe o novo disco à sua instância do
sql-server-test
com autorizações de leitura/escrita:gcloud compute instances attach-disk sql-server-test \ --disk=sql-server-test-data --mode=rw
Monte o novo disco de dados no Windows
O disco que criou está associado à instância de VM, mas está offline, e o volume está definido como só de leitura. Para configurar o volume como de leitura/escrita e montável, siga estes passos:
- Na janela do cliente RDP que está ligada à sua instância, clique no botão Iniciar na barra de tarefas do Windows, escreva
diskpart
e, de seguida, clique em diskpart para abrir o DiskPart.sql-server-test
- Quando lhe for pedido que permita que a app faça alterações, clique em Sim.
Apresente uma lista dos discos anexados à sua instância:
list disk
O resultado é o seguinte:
Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 50 GB 0 B Disk 1 Offline 100 GB 0 B *
O seu disco de dados (Disco 1, 100 GB) está offline.
Selecione o disco de dados:
select disk 1
Coloque o disco online:
online disk
Liste os volumes disponíveis:
list volume
O resultado é o seguinte:
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
O volume 2 (99 GB) é o seu volume de dados. É apresentado como Oculto sem letra de unidade atribuída.
Selecione o volume:
select volume 2
Limpe os atributos definidos quando criou o volume a partir da imagem instantânea:
attr volume clear readonly hidden nodefaultdriveletter shadowcopy
Este comando torna o volume montável.
Montar o volume como unidade D:
assign letter=d
Sair do DiskPart:
exit
Reponha a propriedade e as autorizações de ficheiros
Uma vez que criou o disco de dados tirando uma captura de ecrã na instância sql-server-prod
, os IDs dos utilizadores para a propriedade e as autorizações dos ficheiros são diferentes dos
da instância sql-server-test
. Tem de alterar a propriedade dos ficheiros para um utilizador na instância do sql-server-test
e atualizar as autorizações para tornar os ficheiros legíveis para o utilizador local e o utilizador do MSSQLSERVER
.
- Na janela do cliente RDP ligada à sua instância do
sql-server-test
, clique no botão Iniciar na barra de tarefas do Windows e, de seguida, escrevacmd
. - Abra a app Linha de comandos como administrador.
Defina o proprietário dos ficheiros na pasta
sql-server-data
como o utilizador do serviçoMSSQLSERVER
:icacls d:\sql-server-data /setowner "nt service\mssqlserver" /t
Reponha todas as autorizações em todos os ficheiros na pasta de nível superior
sql-server-data
:icacls d:\sql-server-data /reset /t
Atualize as Listas de controlo de acesso (LCAs) da pasta
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
Desative a herança da pasta raiz do disco para que apenas sejam aplicadas as autorizações anteriores:
icacls d:\sql-server-data /inheritancelevel:r
Saia da app Linha de comandos:
exit
A instância do SQL Server e o utilizador local na instância do sql-server-test
já podem aceder aos ficheiros da base de dados.
Anexe a base de dados clonada
Agora, anexe a base de dados clonada na unidade D (data
) à instância do SQL Server de teste. Pode anexar a base de dados de forma interativa através dos assistentes do Microsoft SQL Server Management Studio ou diretamente executando um comando Transact-SQL.
SSMS Wizard
- Na sessão RDP associada à sua instância do
sql-server-test
, clique no botão Iniciar na barra de tarefas do Windows, escrevassms
e, de seguida, selecione Microsoft SQL Server Management Studio (Executar como administrador). - Clique em Associar para associar ao motor de base de dados
sql-server-test
através da autenticação do Windows. - No Object Explorer, clique com o botão direito do rato em Databases e, de seguida, selecione Attach.
- No assistente Anexar bases de dados, clique em Adicionar.
- Procure o diretório
D:\sql-server-data\wideworldimporters
, clique no ficheiroWideWorldImporters.mdf
e, de seguida, clique em OK. Clique em OK para anexar a base de dados.
Após alguns momentos, a base de dados clonada é anexada. Pode clicar em Atualizar refresh no Explorador de objetos para ver se a base de dados está listada na árvore de bases de dados.
Transact-SQL
- Numa sessão RDP associada à sua instância do
sql-server-test
, clique no botão Iniciar na barra de tarefas do Windows, escrevassms
e, de seguida, selecione Microsoft SQL Server Management Studio (Executar como administrador). - Clique em Associar para associar ao motor de base de dados
sql-server-prod
através da autenticação do Windows. - Selecione Ficheiro > Novo > Consulta com ligação atual para abrir uma nova janela de consulta.
Anexe os ficheiros de dados e de registo no diretório
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
Clique com o botão direito do rato no código da consulta e clique em Executar.
Após alguns momentos, a base de dados clonada é anexada. Pode clicar em Atualizar refresh no Explorador de objetos para ver se a sua base de dados está listada na árvore Bases de dados. Depois de anexar a base de dados, pode fechar a janela de consulta sem guardar.
Para verificar se a base de dados de exemplo está funcional, pode executar uma consulta.
No SQL Server Management Studio, selecione File > New > Query with Current Connection para abrir uma nova janela de consulta e, de seguida, copie o código seguinte:
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;
Esta consulta obtém informações de resumo das 100 faturas emitidas mais recentemente.
Para executar a consulta, clique com o botão direito do rato na janela de consulta e, de seguida, selecione Executar.
O painel Resultados apresenta as informações de resumo.
Agora que viu como clonar uma base de dados através de instantâneos de discos persistentes, pode experimentar clonar uma base de dados através da cópia de segurança e do restauro. Para
concluir o tutorial desta segunda abordagem, tem de eliminar a base de dados que clonou da instância sql-server-test
.
Elimine a base de dados clonada
Para eliminar a base de dados clonada que criou através de instantâneos de disco, siga os passos abaixo.
SSMS Wizard
- Na sessão RDP ligada à sua instância do
sql-server-test
, abra o Microsoft SQL Server Management Studio e, de seguida, estabeleça ligação ao motor de base de dados dosql-server-test
. - No Object Explorer, expanda Databases, clique com o botão direito do rato na base de dados
WorldWideImporters
e, de seguida, selecione Delete. - No assistente Eliminar objeto, certifique-se de que a caixa de verificação Fechar ligações existentes está selecionada.
- Clique em OK.
Transact-SQL
- Na sessão RDP ligada à sua instância do
sql-server-test
, abra o Microsoft SQL Server Management Studio e, de seguida, estabeleça ligação ao motor de base de dados dosql-server-test
. Para fechar todas as ligações à base de dados
WideWorldImporters
e eliminá-la, copie o seguinte script para uma nova janela de consulta, clique com o botão direito do rato no código e, de seguida, clique em Executar:USE [master] GO ALTER DATABASE [WideWorldImporters] SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO DROP DATABASE [WideWorldImporters] GO
Depois de eliminar a base de dados, pode fechar a janela de consulta sem guardar. Pode clicar em Atualizar refresh no Explorador de objetos para confirmar que a base de dados foi eliminada.
Clonagem através da cópia de segurança e do restauro
Um segundo método de clonagem de uma base de dados do SQL Server em execução no Compute Engine é usar a cópia de segurança e o restauro nativos do SQL Server. Com esta abordagem, transfere a cópia de segurança através do armazenamento na nuvem.
Esta secção do tutorial usa recursos que criou na secção Clonar a base de dados com instantâneos de disco do Compute Engine deste tutorial. Se não concluiu essa secção, tem de o fazer antes de continuar.
Nesta secção do tutorial, faz o seguinte:
- Crie um contentor do Cloud Storage.
- Faça uma cópia de segurança da base de dados no servidor de produção.
- Copie o ficheiro de cópia de segurança do servidor de produção para o Cloud Storage.
- Copie o ficheiro de cópia de segurança do Cloud Storage para o servidor de teste.
- Restaure a cópia de segurança na instância de teste.
O diagrama seguinte mostra como uma base de dados é clonada através da transferência de uma cópia de segurança com o Cloud Storage.
Uma vez que os sistemas fora do Google Cloud podem ter acesso ao Cloud Storage, pode usar esta abordagem para clonar bases de dados de instâncias externas do SQL Server.
Crie um contentor do Cloud Storage
Tem de criar um contentor do Cloud Storage que armazene os ficheiros de cópia de segurança
enquanto os transfere da instância sql-server-prod
para a instância sql-server-test
.
Consola
Na Google Cloud consola, aceda à página do navegador do Cloud Storage .
Clique em Criar contentor.
Atribua o nome
project-name
-bucket ao contentor.Substitua o seguinte:
project-name
: o ID do seu projeto Google Cloud.
Expanda Escolha uma classe de armazenamento predefinida e, de seguida, selecione Regional.
Para Localização, selecione us-east1.
Clique em Criar.
Cloud Shell
Abra o Cloud Shell.
Crie um contentor do Cloud Storage na mesma região que as instâncias de VM:
gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
Faça uma cópia de segurança completa num determinado momento da base de dados
No seu ambiente de produção, já pode fazer cópias de segurança. Pode usar estas cópias de segurança como base para clonar a sua base de dados. Neste tutorial, vai criar uma cópia de segurança apenas de cópia para que não afete nenhuma agenda de cópias de segurança completa ou incremental existente.
SSMS Wizard
- Na sessão RDP ligada à sua instância do
sql-server-prod
, abra o Microsoft SQL Server Management Studio e, de seguida, estabeleça ligação ao motor de base de dados dosql-server-prod
. - No Object Explorer, expanda Databases, clique com o botão direito do rato na base de dados
WorldWideImporters
e, de seguida, selecione Tasks > Back Up. - No assistente Fazer uma cópia de segurança da base de dados, certifique-se de que os seguintes valores
estão definidos:
- O tipo de cópia de segurança está definido como Completa.
- A opção Cópia de segurança apenas de cópia está selecionada.
- A opção Fazer uma cópia de segurança para está definida como Disco.
- Para adicionar um ficheiro de cópia de segurança, clique em Adicionar.
No campo Destino, introduza
D:\sql-server-data\WideWorldImporters-copy.bak
.Selecione a página Opções de multimédia e, de seguida, selecione Substituir todos os conjuntos de cópias de segurança existentes.
Selecione a página Opções de cópia de segurança e, de seguida, altere a opção Definir compressão da cópia de segurança para Comprimir cópia de segurança.
Para criar a cópia de segurança, clique em OK.
A criação da cópia de segurança demora alguns minutos.
Transact-SQL
- Na sessão RDP ligada à sua instância do
sql-server-prod
, abra o Microsoft SQL Server Management Studio e, de seguida, estabeleça ligação ao motor de base de dados dosql-server-prod
. Para fazer uma cópia de segurança comprimida apenas da
WideWorldImporters
base de dadospara o ficheiro
d:\sql-server-data\WideWorldImporters-copy.bak
, copie o seguinte script para uma nova janela de consulta, clique com o botão direito do rato no código, e, de seguida, clique em Executar.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
Aguarde alguns minutos para que o servidor crie a cópia de segurança. Após a conclusão da cópia de segurança da base de dados, pode fechar a janela de consulta sem guardar.
Copie o ficheiro de cópia de segurança para o Cloud Storage
- Na sessão RDP ligada à sua instância do
sql-server-prod
, abra uma janela do Windows PowerShell. Copie o ficheiro de cópia de segurança para o contentor do Cloud Storage que criou anteriormente:
gcloud storage cp d:\sql-server-data\WideWorldImporters-copy.bak "gs://$(gcloud config get-value project)-bucket/" --no-clobber
Saia do PowerShell.
exit
Copie o ficheiro de cópia de segurança do Cloud Storage para sql-server-test
- Na sessão RDP associada à sua instância do
sql-server-test
, abra uma janela do Windows PowerShell. Copie o ficheiro de cópia de segurança para o contentor do Cloud Storage que criou anteriormente:
gcloud storage cp "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" d:\sql-server-data\
Saia do PowerShell.
exit
A sua instância de teste tem agora a cópia de segurança completa da sua base de dados no disco local.
Restaure a cópia de segurança
Agora, pode restaurar a cópia de segurança completa na unidade D (data
) da instância sql-server-test
.
SSMS Wizard
- Na sessão RDP ligada à sua instância do
sql-server-test
, abra o Microsoft SQL Server Management Studio e, de seguida, estabeleça ligação ao motor de base de dados dosql-server-test
. - No Object Explorer, clique com o botão direito do rato em Databases e, de seguida, selecione Restore Database.
- Para Origem, selecione o Dispositivo e, de seguida, clique no botão [...] junto ao nome do dispositivo.
- Na caixa de diálogo Selecionar dispositivos de cópia de segurança, selecione Ficheiro na lista Tipo de suporte de cópia de segurança e, de seguida, clique em Adicionar.
- No seletor de ficheiros, procure
D:\sql-server-data
, clique no ficheiroWideWorldImporters-copy.bak
e, de seguida, clique em OK. Clique em OK para fechar a caixa de diálogo Selecionar dispositivos de cópia de segurança.
A caixa de diálogo Restaurar base de dados está agora preenchida com dados sobre a cópia de segurança da base de dados
WideWorldImporters
.Em Selecionar uma página, clique em Ficheiros.
Selecione Mover todos os ficheiros para a pasta.
Nos campos Pasta do ficheiro de dados e Pasta do ficheiro de registo, introduza
D:\sql-server-data\wideworldimporters
.Para iniciar a operação de restauro, clique em OK.
Quando o processo estiver concluído, é apresentada a mensagem
Database 'WideWorldImporters' restored successfully
.
Transact-SQL
- Na sessão RDP ligada à sua instância do
sql-server-test
, abra o Microsoft SQL Server Management Studio e, de seguida, estabeleça ligação ao motor de base de dados dosql-server-test
. - Selecione Ficheiro > Novo > Consulta com ligação atual para abrir uma nova janela de consulta.
Copie o seguinte comando T-SQL para iniciar um restauro a partir do ficheiro de cópia de segurança que copiou do Cloud Storage, restaurando a base de dados e o ficheiro de registo no diretório
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
Clique com o botão direito do rato no código e clique em Executar.
Após alguns minutos, o restauro da base de dados é concluído. Pode clicar em Atualizar refresh no Explorador de objetos para ver se a base de dados está listada na árvore Bases de dados. Após a conclusão do restauro da base de dados, pode fechar a janela de consulta sem guardar.
Para demonstrar que a base de dados está funcional, pode executar uma consulta.
No Microsoft SQL Management Studio, selecione File > New > Query with Current Connection para abrir uma nova janela de consulta e, de seguida, copie o código seguinte:
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;
Esta consulta obtém informações de resumo das 100 faturas emitidas mais recentemente.
Clique com o botão direito do rato na janela de consulta e clique em Executar.
O painel Resultados apresenta as informações de resumo.
Usar o Cloud SQL como destino da clonagem
Se a base de dados de destino estiver alojada no Cloud SQL e a base de dados de origem estiver no Compute Engine, o único mecanismo suportado para clonagem é fazer uma cópia de segurança da base de dados no Cloud Storage e, em seguida, restaurar a base de dados no Cloud SQL.
Para este tutorial, vai reutilizar a cópia de segurança que criou na secção anterior.
Crie uma instância do Cloud SQL para SQL Server
Abra o Cloud Shell.
Crie uma instância do Cloud SQL para SQL Server que execute a mesma versão da base de dados que a sua instância do
sql-server-prod
:gcloud sql instances create sqlserver-cloudsql \ --database-version=SQLSERVER_2022_STANDARD \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --region=${REGION}
Isto cria uma instância com o utilizador root de
sqlserver
com uma palavra-passe desqlserver12@
.
Atualize as autorizações de objetos
As autorizações corretas têm de ser definidas no contentor do Cloud Storage e no objeto de cópia de segurança para que a conta de serviço do Cloud SQL os possa ler.
Estas autorizações são definidas automaticamente quando usa a Google Cloud consola para
importar o objeto ou pode defini-las através de comandos gcloud
.
Abra o Cloud Shell.
Defina uma variável de ambiente que contenha o endereço da conta de serviço da sua instância do Cloud SQL:
CLOUDSQL_SA="$(gcloud sql instances describe sqlserver-cloudsql --format='get(serviceAccountEmailAddress)')"
Adicione a conta de serviço à política IAM do contentor como leitor e escritor:
gcloud storage buckets add-iam-policy-binding "gs://$(gcloud config get-value project)-bucket/" \ --member=user:"${CLOUDSQL_SA}" --role=roles/storage.objectUser
Importe a base de dados exportada
Abra o Cloud Shell.
Importe o ficheiro exportado para a sua instância do Cloud SQL:
gcloud sql import bak sqlserver-cloudsql \ "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" \ --database WideWorldImporters
Quando lhe for pedido, introduza
y
.Instale o pacote de ferramentas do SQL Server:
sudo apt install -y mssql-tools
Se aceitar os termos da licença, introduza
yes
quando lhe for pedido.Use estas ferramentas para se ligar ao Cloud SQL a partir do Cloud Shell, para poder executar consultas na instância do Cloud SQL.
Associe o proxy do Cloud SQL à sua instância do SQL Server:
CONNECTION_NAME=$(gcloud sql instances describe sqlserver-cloudsql --format='value(connectionName)') cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
Para verificar se a base de dados clonada está funcional, execute uma consulta:
/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 lhe for pedido, introduza a palavra-passe do utilizador
sqlserver
do servidor de base de dadossqlserver-cloudsql
(sqlserver12@
).Esta consulta obtém informações de resumo das 100 faturas emitidas mais recentemente.
O resultado é o seguinte:
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 ...
Limpar
Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados neste tutorial, pode eliminar o Google Cloud projeto que criou para este 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.
O que se segue?
- Saiba mais sobre as práticas recomendadas para executar instâncias do SQL Server no Compute Engine.
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.