É 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.
Siga o SQL Dicas!