Restaurar um banco de dados em um novo local (SQL Server)
Este tópico descreve como restaurar um banco de dados do SQL Server em um novo local e, opcionalmente, renomear o banco de dados, no SQL Server 2012 usando o SQL Server Management Studio ou o Transact-SQL. Você pode mover um banco de dados para um novo caminho ou criar uma cópia de um banco de dados na mesma instância do servidor ou em uma instância de servidor diferente.
Neste tópico
Antes de começar:
Limitações e restrições
Pré-requisitos
Recomendações
Segurança
Para restaurar um banco de dados em um novo local e, opcionalmente, renomear o banco de dados usando:
SQL Server Management Studio
Transact-SQL
Tarefas relacionadas
Antes de começar
Limitações e restrições
- O administrador do sistema que restaura um backup de banco de dados completo deve ser a única pessoa a usar o banco de dados a ser restaurado.
Pré-requisitos
- No modelo de recuperação completa ou bulk-logged, para que você possa restaurar um banco de dados, faça backup do log de transações ativas. Para obter mais informações, consulte Fazer backup de um log de transações (SQL Server).
Recomendações
Para restaurar um banco de dados criptografado, é necessário ter acesso ao certificado ou à chave assimétrica usada para criptografar o banco de dados. Sem o certificado ou a chave assimétrica, o banco de dados não pode ser restaurado. Como resultado, o certificado usado para criptografar a chave de criptografia do banco de dados deverá ser retido enquanto o backup for necessário. Para obter mais informações, consulte Certificados e chaves assimétricas do SQL Server.
Para obter informações sobre considerações adicionais para a movimentação de um banco de dados, consulte Copiar bancos de dados com backup e restauração.
Se você restaurar um banco de dados do SQL Server 2005 ou do SQL Server 2008 no SQL Server 2012, o banco de dados será atualizado automaticamente. Normalmente, o banco de dados se torna disponível imediatamente. No entanto, se um banco de dados do SQL Server 2005 tiver índices de texto completo, o processo de atualização importará, redefinirá ou recriará esses índices, dependendo da configuração da propriedade de servidor upgrade_option . Se a opção de atualização for definida para importação (upgrade_option = 2) ou recriação (upgrade_option = 0), os índices de texto completo permanecerão indisponíveis durante a atualização. Dependendo da quantidade de dados a serem indexados, a importação pode levar várias horas, e a recriação pode ser até dez vezes mais demorada. Lembre-se também de que, quando a opção de atualização estiver definida para importar, os índices de texto completo associados serão recriados se um catálogo de texto completo não estiver disponível. Para alterar a configuração da propriedade de servidor upgrade_option, use sp_fulltext_service.
Segurança
Por motivos de segurança, é recomendável não anexar ou restaurar bancos de dados de origens desconhecidas ou não confiáveis. Esses bancos de dados podem conter um código mal-intencionado que pode executar código Transact-SQL involuntário ou provocar erros modificando o esquema ou a estrutura física do banco de dados. Antes de usar um banco de dados de origem desconhecida ou não confiável, execute DBCC CHECKDB no banco de dados, em um servidor que não seja de produção. Além disso, examine o código, como procedimentos armazenados ou outro código definido pelo usuário, no banco de dados.
Permissões
Se o banco de dados que está sendo restaurado não existir, o usuário deverá ter permissões CREATE DATABASE para poder executar o comando RESTORE. Se o banco de dados existir, permissões RESTORE assumirão como padrão os membros das funções de servidor fixas sysadmin e dbcreator, e o proprietário (dbo) do banco de dados.
As permissões RESTORE são concedidas a funções nas quais as informações de associação estão sempre disponíveis para o servidor. Como a associação da função de banco de dados fixa pode ser verificada apenas quando o banco de dados está acessível e não danificado, o que nem sempre é o caso quando RESTORE é executado, os membros da função de banco de dados fixa db_owner não têm permissões RESTORE.
[Top]
Usando o SQL Server Management Studio
Para restaurar um banco de dados em um novo local e, opcionalmente, renomear o banco de dados
Conecte-se à instância adequada do Mecanismo de Banco de Dados do SQL Server e, no Pesquisador de Objetos, clique no nome do servidor para expandir a árvore de servidores.
Clique com o botão direito do mouse em Bancos de Dados e clique em Restaurar Banco de Dados. A caixa de diálogo Restaurar Banco de Dados é aberta.
Na página Geral, use a seção Origem para especificar a origem e o local dos conjuntos de backup a serem restaurados. Selecione uma das opções a seguir:
Banco de Dados
Selecione o banco de dados a ser restaurado na lista suspensa. A lista contém apenas os bancos de dados dos quais foi feito um backup de acordo com o histórico de backup do msdb.
Observação Se o backup foi obtido de um servidor diferente, o servidor de destino não terá informações de histórico de backup para o banco de dados especificado. Nesse caso, selecione Dispositivo para especificar manualmente o arquivo ou o dispositivo a ser restaurado.
Dispositivo
Clique no botão Procurar (...) para abrir a caixa de diálogo Selecione dispositivos de backup. Na caixa Tipo de mídia de backup, selecione um dos tipos de dispositivo listados. Para selecionar um ou mais dispositivos da caixa Mídia de backup, clique em Adicionar.
Após adicionar os dispositivos desejados à caixa de listagem Mídia de backup, clique em OK para voltar à página Geral.
Na caixa de listagem Origem: Dispositivo: Banco de Dados, selecione o nome do banco de dados que deve ser restaurado.
Observação Essa lista estará disponível apenas quando Dispositivo for selecionado. Apenas os bancos de dados que têm backups no dispositivo selecionado estarão disponíveis.
Na seção Destino, a caixa Banco de Dados é preenchida automaticamente com o nome do banco de dados a ser restaurado. Para alterar o nome do banco de dados, digite o novo nome na caixa Banco de Dados.
Na caixa Restaurar para, deixe o padrão como Para o último backup obtido ou clique em Linha do tempo para acessar a caixa de diálogo Linha do Tempo de Backup para selecionar manualmente um momento determinado a fim de interromper a ação de recuperação. Consulte Linha do tempo de backup para obter mais informações sobre como designar um momento determinado.
Na grade Conjuntos de backup a serem restaurados, selecione os backups a serem restaurados. Essa grade exibe os backups disponíveis para o local especificado. Por padrão, um plano de recuperação é sugerido. Para substituir o plano de recuperação sugerido, você pode alterar as seleções na grade. Backups que dependem da restauração de um backup anterior têm a seleção automaticamente cancelada quando a seleção do backup anterior é cancelada.
Para obter informações sobre as colunas da grade Conjuntos de backup a serem restaurados, consulte Restaurar banco de dados (página Geral).
Para especificar o novo local dos arquivos de banco de dados, selecione a página Arquivos e clique em Realoque todos os arquivos para pasta. Forneça um novo local para a Pasta do arquivo de dados e Pasta do arquivo de log. Para obter mais informações sobre essa grade, consulte Restaurar banco de dados (página de arquivos).
N página Opções, ajuste as opções desejadas. Para obter mais informações sobre essas opções, consulte Restaurar o banco de dados (página Opções).
[Top]
Usando Transact-SQL
Para restaurar um banco de dados em um novo local e, opcionalmente, renomear o banco de dados
Opcionalmente, determine os nomes lógicos e físicos dos arquivos no conjunto de backup que contém o backup completo de banco de dados que você deseja restaurar. Essa instrução retorna a uma lista de arquivos de banco de dados e de log contidos no conjunto de backup. A sintaxe básica é a seguinte:
RESTORE FILELISTONLY FROM <backup_device> WITH FILE = backup_set_file_number
Aqui, backup_set_file_number indica a posição do backup no conjunto de mídias. Você pode obter a posição de um conjunto de backup por meio da instrução RESTORE HEADERONLY. Para obter mais informações, consulte "Especificando um conjunto de backup", em Argumentos de RESTORE (Transact-SQL).
Essa instrução também dá suporte a uma série de opções WITH. Para obter mais informações, consulte RESTORE FILELISTONLY (Transact-SQL).
Use a instrução RESTORE DATABASE para restaurar o backup completo do banco de dados. Por padrão, os arquivos de dados e de log são restaurados em seus locais originais. Para realocar um banco de dados, use a opção MOVE para realocar cada um dos arquivos do banco de dados e para evitar colisões com arquivos existentes.
A sintaxe Transact-SQL básica para restaurar o banco de dados em um novo local e com um novo nome é:
RESTORE DATABASE new_database_name
FROM backup_device [ ,...n ]
[ WITH
{
[ RECOVERY | NORECOVERY ]
[ , ] [ FILE ={ backup_set_file_number | @backup\_set\_file\_number } ]
[ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
}
;
Observação Ao se preparar para realocar um banco de dados em um disco diferente, você deve verificar se espaço suficiente está disponível e identificar todas as colisões potenciais com arquivos existentes. Isso envolve o uso de uma instrução RESTORE VERIFYONLY que especifica os mesmos parâmetros MOVE que você planeja usar em sua instrução RESTORE DATABASE.
A tabela a seguir descreve os argumentos dessa instrução RESTORE em termos de restauração de um banco de dados em um novo local. Para obter mais informações sobre esses argumentos, consulte RESTORE (Transact-SQL).
new_database_name
O novo nome do banco de dados.Observação Se você estiver restaurando o banco de dados em uma instância de servidor diferente, poderá usar o nome do banco de dados original em vez de um novo nome.
backup_device [ ,...n ]
Especifica uma lista separada por vírgulas de 1 a 64 dispositivos de backup nos quais o backup de banco de dados precisa ser restaurado. Você pode especificar um dispositivo de backup físico ou especificar um dispositivo de backup lógico correspondente, se definido. Para especificar um dispositivo de backup físico, use a opção DISK ou TAPE:{ DISK | TAPE } = physical_backup_device_name
Para obter mais informações, consulte Dispositivos de backup (SQL Server).
{ RECOVERY | NORECOVERY }
Se o banco de dados usar o modelo de recuperação completa, você poderá precisar aplicar backups de log de transações depois de restaurar o banco de dados. Nesse caso, especifique a opção NORECOVERY.Caso contrário, use a opção de RECOVERY que é a padrão.
FILE = { backup_set_file_number | @backup\_set\_file\_number }
Identifica o conjunto de backup a ser restaurado. Por exemplo, um backup_set_file_number de 1 indica o primeiro conjunto de backup na mídia de backup e um backup_set_file_number de 2 indica o segundo conjunto de backup. Você pode obter o backup_set_file_number de um backup definido usando a instrução RESTORE HEADERONLY.Quando esta opção não está especificada, o padrão é usar o primeiro conjunto de backup no dispositivo de backup.
Para obter mais informações, consulte "Especificando um conjunto de backup", em Argumentos de RESTORE (Transact-SQL).
MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
Especifica que o arquivo de log ou de dados especificado pelo logical_file_name_in_backup deve ser restaurado no local especificado pelo operating_system_file_name. Especifique uma instrução MOVE para cada arquivo lógico que você deseja restaurar do conjunto de backup para um novo local.Opção
Descrição
logical_file_name_in_backup
Especifica o nome lógico de um arquivo de log ou de dados no conjunto de backup. O nome do arquivo lógico de um arquivo de log ou de dados em um conjunto de backup corresponde ao seu nome lógico no banco de dados quando o conjunto de backup foi criado.
Observação Para obter uma lista dos arquivos lógicos do conjunto de backup, use RESTORE FILELISTONLY.
operating_system_file_name
Especifica um novo local para o arquivo especificado por logical_file_name_in_backup. O arquivo será restaurado neste local.
Opcionalmente, operating_system_file_name especifica um novo nome de arquivo para o arquivo restaurado. Isso será necessário se você estiver criando uma cópia de um banco de dados existente na mesma instância de servidor.
n
É um espaço reservado que indica que você pode especificar instruções MOVE adicionais.
Exemplo (Transact-SQL)
Este exemplo cria um novo banco de dados denominado MyAdvWorks por meio da restauração de um backup do banco de dados de exemplo AdventureWorks2012 que inclui dois arquivos: AdventureWorks2012 _Data e AdventureWorks2012 _Log. Esse banco de dados usa o modelo de recuperação simples. O banco de dados AdventureWorks2012 já existe na instância do servidor, portanto, os arquivos no backup devem ser restaurados em um novo local. A instrução RESTORE FILELISTONLY é usada para determinar o número e os nomes dos arquivos no banco de dados que está sendo restaurado. O backup do banco de dados é o primeiro conjunto de backup no dispositivo de backup.
Observação |
---|
Os exemplos de como fazer backup e restaurar o log de transações, inclusive restaurações pontuais, usam o banco de dados MyAdvWorks_FullRM que é criado no AdventureWorks2012 exatamente como no exemplo MyAdvWorks a seguir. No entanto, o banco de dados MyAdvWorks_FullRM resultante deve ser alterado para usar o modelo de recuperação completa por meio da seguinte instrução Transact-SQL: ALTER DATABASE <database_name> SET RECOVERY FULL. |
USE master;
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks2012_Backup is the name of the backup device.
RESTORE FILELISTONLY
FROM AdventureWorks2012_Backup;
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
FROM AdventureWorks2012_Backup
WITH RECOVERY,
MOVE 'AdventureWorks2012_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',
MOVE 'AdventureWorks2012_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';
GO
Para obter um exemplo de como criar um backup de banco de dados completo do banco de dados AdventureWorks2012 , consulte Criar um backup completo de banco de dados (SQL Server).
[Top]
Tarefas relacionadas
[Top]
Consulte também
Referência
Conceitos
Gerenciar metadados ao disponibilizar um banco de dados em outra instância do servidor (SQL Server)