«

»

mar 15

Restaurar uma base em outra base existente

É muito comum em ambientes onde a base de homologação fica no próprio servidor de produção ter que restaurar uma base em cima de outra. Geralmente precisamos fazer um backup da base de produção e restaurar em cima da base de homologação para deixá-la igual e assim tornar os testes válidos.

Exemplo:

Restaurar a base AdventureWorks em cima da base AdventureWorksHmg sem alterar seu nome e o caminho de seus arquivos.

Vamos ver qual o procedimento para atingir este objetivo:

 

1- Se não tivermos um backup atual, precisamos fazer ele agora:

BACKUP DATABASE AdventureWorks TO DISK = ‘C:\Backups\AdventureWorks_UpdateHmg.bak’ –qualquer nome

 

2- Depois temos que descobrir o nome lógico dos arquivos. Este nome lógico é um nome que referencia os arquivos em seu respectivo caminho. Por exemplo, sua base AdventureWorks pode ter dois arquivos, o C:\Databases\AdventureWorks.mdf (dados) e o C:\Databases\AdventureWorks.ldf (Tlogs). Para saber o nome lógico, vamos examinar o arquivo de backup que acabamos de gerar:

 

RESTORE FILELISTONLY FROM DISK = ‘C:\Backups\AdventureWorks_UpdateHmg.bak’

 

Teremos uma série de informações mas as que interessam neste momento são:

 

Reparem que temos AdventureWorks_Data e AdventureWorks_Log, ou seja, os nomes lógicos dos nossos arquivos físicos.

 

3- Antes de fazermos o restore, precisamos deixar a base AdventureWorksHmg em modo Restricted User pois não podemos ter usuários querendo fazer alterações na base enquanto fazemos o restore:

 

ALTER DATABASE AdventureWorksHmg SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE

 

4- Agora vamos fazer o restore em cima da base AdventureWorksHmg que já existe:

 

RESTORE DATABASE AdventureWorksHmg FROM DISK = ‘C:\Backups\AdventureWorks_UpdateHmg.bak’
WITH REPLACE, RECOVERY,
MOVE ‘AdventureWorks_Data’ TO ‘C:\Databases\AdventureWorksHmg.MDF’,
MOVE ‘AdventureWorks_Log’ TO ‘C:\Databases\AdventureWorksHmg.LDF’

 

5- Finalizando, não podemos esquecer de deixar a base disponível para os usuários novamente:

 

ALTER DATABASE AdventureWorksHmg SET MULTI_USER 

 

Agora temos todos os dados da base AdventureWorks dentro da base AdventureWorksHmg.

Deixe uma resposta