supondo que alguem nos envia um backup de uma base de dados sql e queremos fazer restore para o nosso servidor, à partida fariamos algo como:
RESTORE DATABASE nomeBaseDados
FROM DISK = “path\\ficheiro.bak”
no entanto isto pressupõe que a base de dados que vamos restaurar vai ficar (pode ficar) no mesmo sitio onde estava no momento em que foi feito o backup, isto é, se estava em d:\\basedados\\ficheiro.mdf, então esse directorio tem que existir e a base de dados irá ficar com o mesmo nome.
isto normalmente não é problemático em cenários em que estamos a tratar de backups que fomos nós que fizemos, mas quando isso nõo acontece a probabilidade de existir a path começa a reduzir.
para ultrapassar esse problema podemos fazer o seguinte
RESTORE DATABASE nomeBaseDados
FROM DISK = “path\\ficheiro.bak”
WITH MOVE “ficheiro_Data” TO “novaPath\\novoNome.mdf”,
MOVE “ficheiro_Log” TO “novaPath\\novoNome.ldf”,
REPLACE
em que o primeiro parametro do MOVE é o nome lógico que o sqlserver dá aos ficheiros.
para conhecermos essa estrutura temos que primeiro fazer
RESTORE FILELISTONLY
FROM DISK = “path\\ficheiro.bak”
finalmente, no caso de o backup já incluir várias versões da base de dados deveremos incluir ainda o parametro File, ou seja
RESTORE DATABASE nomeBaseDados
FROM DISK = “path\\ficheiro.bak”
WITH MOVE “ficheiro_Data” TO “novaPath\\novoNome.mdf”,
MOVE “ficheiro_Log” TO “novaPath\\novoNome.ldf”,
REPLACE, FILE = 1 (este numero é o numero da versão)