Partilhar via


Restaurar um banco de dados para um novo local (SQL Server)

Aplica-se a:SQL Server

Este artigo descreve como restaurar um banco de dados do SQL Server para um novo local e, opcionalmente, renomear o banco de dados no SQL Server usando o SQL Server Management Studio (SSMS) ou o Transact-SQL. Você pode mover um banco de dados para um novo caminho de diretório ou criar uma cópia de um banco de dados na mesma instância do servidor ou em uma instância de servidor diferente.

Antes de começar

Limitações e restrições

  • O administrador do sistema que restaura um backup completo do banco de dados deve ser a única pessoa atualmente usando o banco de dados a ser restaurado.

Pré-requisitos

  • No modelo de recuperação completa ou bulk-logged, antes de restaurar um banco de dados, você deve fazer backup do log de transações ativo. Para obter mais informações, consulte Efetuar Cópia de Segurança de um Log de Transações (SQL Server).

  • Para restaurar um banco de dados criptografado, você deve ter acesso ao certificado ou à chave assimétrica usada para criptografar o banco de dados! Sem esse certificado ou chave assimétrica, não é possível restaurar o banco de dados. Você deve manter o certificado usado para criptografar a chave de criptografia do banco de dados pelo tempo que precisar do backup. Para obter mais informações, consulte certificados do SQL Server e chaves assimétricas.

Recomendações

  • Para obter outras considerações sobre como mover um banco de dados, consulte Copiar bancos de dados com backup e restauração.

  • Se você restaurar um banco de dados SQL Server 2005 (9.x) ou superior para o SQL Server, o banco de dados será atualizado automaticamente. Normalmente, o banco de dados fica disponível imediatamente. No entanto, se um banco de dados do SQL Server 2005 (9.x) tiver índices de texto completo, o processo de atualização os importará, redefinirá ou recriará, dependendo da configuração da propriedade do servidor upgrade_option. Se a opção de atualização estiver definida para importar (upgrade_option = 2) ou reconstruir (upgrade_option = 0), os índices de texto completo não estarão disponíveis durante a atualização. Dependendo da quantidade de dados que estão sendo indexados, a importação pode levar várias horas e a reconstrução pode levar até 10 vezes mais. Observe também que, quando a opção de atualização é definida para importar, os índices de texto completo associados são reconstruídos se um catálogo de texto completo não estiver disponível. Para alterar a configuração da propriedade upgrade_option do servidor, use sp_fulltext_service.

Segurança

Por motivos de segurança, recomendamos que não anexe nem restaure bases de dados de fontes desconhecidas ou não fidedignas. Esses bancos de dados podem conter código mal-intencionado que pode executar código Transact-SQL não intencional ou causar erros modificando o esquema ou a estrutura física do banco de dados. Antes de usar um banco de dados de uma fonte desconhecida ou não confiável, execute DBCC CHECKDB no banco de dados em um servidor que não seja de produção e também 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 deve ter permissões CREATE DATABASE para poder executar RESTORE. Se o banco de dados existir, as permissões padrão RESTORE são para 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 dadas a funções nas quais as informações de associação estão sempre prontamente disponíveis para o servidor. Como a associação à função de banco de dados fixa pode ser verificada somente quando o banco de dados está acessível e sem danos, 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.

Restaurar um banco de dados para um novo local; opcionalmente, renomeie o banco de dados usando o SSMS

  1. Conecte-se à instância apropriada do Mecanismo de Banco de Dados do SQL Server e, no Pesquisador de Objetos, selecione o nome do servidor para expandir a árvore do servidor.

  2. Clique com o botão direito do rato Bases de Dadose, em seguida, selecione Restaurar Base de Dados. A caixa de diálogo Restaurar Banco de Dados é aberta.

  3. Na página Geral, use a seção Fonte para especificar a origem e a localização dos conjuntos de backup a restaurar. Selecione uma das seguintes opções:

    • Base de Dados

      Selecione o banco de dados a ser restaurado na lista de opções. A lista contém apenas bases de dados cujos backups foram realizados de acordo com o msdb histórico de backup.

    Observação

    Se o backup for feito de um servidor diferente, o servidor de destino não terá as informações do histórico de backup do banco de dados especificado. Nesse caso, selecione Dispositivo para especificar manualmente o arquivo ou dispositivo a ser restaurado.

    • dispositivo

      Selecione o botão Explorar (...) para abrir a caixa de diálogo Selecionar dispositivos de backup . Na caixa Tipo de mídia de backup, selecione um dos tipos de dispositivo listados. Para selecionar um ou mais dispositivos para a caixa de mídia do Backup, selecione Adicionar.

      Depois de adicionar os dispositivos desejados na caixa de listagem de mídia de Backup , selecione OK para retornar à página Geral.

      Na caixa de listagem Source: Device: Database, selecione o nome do banco de dados que deve ser restaurado.

      Nota Esta lista só está disponível quando o Dispositivo estiver selecionado. Somente bancos de dados que tenham backups no dispositivo selecionado estarão disponíveis.

  4. Na secção Destino, a caixa Banco de Dados é automaticamente preenchida com o nome do banco de dados a ser restaurado. Para alterar o nome do banco de dados, introduza o novo nome na caixa de Banco de Dados .

  5. Na caixa Restaurar para, deixe o padrão como Para o último backup feito ou selecione Linha Temporal para aceder à caixa de diálogo Linha Temporal do Backup, onde pode selecionar manualmente um ponto no tempo para definir a interrupção da ação de recuperação. Consulte a Cronologia de backup para obter mais informações sobre como indicar um ponto específico no tempo.

  6. Na grade conjuntos de backup para restaurar, selecione os backups a serem restaurados. Essa grade exibe os backups disponíveis para o local especificado. Por padrão, é sugerido um plano de recuperação. Para substituir o plano de recuperação sugerido, pode alterar as seleções na grelha. Os backups que dependem da restauração de um backup anterior são automaticamente desmarcados quando o backup anterior é desmarcado.

    Para obter informações sobre as colunas nos conjuntos de backup do para restaurar grade, consulte Restaurar banco de dados (página Geral).

  7. Para especificar o novo local dos arquivos de banco de dados, selecione a página Arquivos e, em seguida, selecione Relocalizar todos os arquivos para a pasta. Forneça um novo local para a pasta Arquivo de dados e pasta Arquivo de log. Para obter mais informações sobre esta grelha, consulte Restaurar Base de Dados (Página de Ficheiros).

  8. Na página Opções, ajuste as opções se desejar. Para obter mais informações sobre essas opções, consulte Restaurar banco de dados (página Opções).

Restaurar o banco de dados para um novo local; opcionalmente, renomeie o banco de dados usando T-SQL

  1. Opcionalmente, determine os nomes lógicos e físicos dos arquivos no conjunto de backup que contém o backup de banco de dados completo que você deseja restaurar. Esta instrução retorna uma lista do banco de dados e dos arquivos de log contidos no conjunto de backup. A sintaxe básica é a seguinte:

    RESTAURE FILELISTONLY A PARTIR DE <backup_device> COM FILE = backup_set_file_number

    Aqui, backup_set_file_number indica a posição do backup no conjunto de mídia. Você pode obter a posição de um conjunto de backup usando a instrução RESTORE HEADERONLY. Para obter mais informações, consulte Especificando um conjunto de backup.

    Esta declaração também suporta várias opções COM. Para obter mais informações, consulte RESTORE FILELISTONLY (Transact-SQL).

  2. 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 para seus locais originais. Para realocar um banco de dados, use a opção MOVE para realocar cada um dos arquivos de banco de dados e evitar colisões com arquivos existentes.

A sintaxe Transact-SQL básica para restaurar o banco de dados para um novo local e 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 há espaço suficiente disponível e identificar possíveis colisões 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 para um novo local. Para obter mais informações sobre esses argumentos, consulte RESTORE (Transact-SQL).

new_database_name
O novo nome para o banco de dados.

Observação

Se você estiver restaurando o banco de dados para 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 dos quais o backup do banco de dados deve ser restaurado. Você pode especificar um dispositivo de backup físico ou um dispositivo de backup lógico correspondente, se definido. Para especificar um dispositivo de backup físico, use a opção DISK ou TAPE:

{ DISCO | FITA } =physical_backup_device_name

Para obter mais informações, consulte Dispositivos de Cópia de Segurança (SQL Server).

{ RECUPERAÇÃO | NORECUPERAÇÃO }
Se o banco de dados usar o modelo de recuperação completa, talvez seja necessário 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 RECOVERY, que é o padrão.

ARQUIVO = { backup_set_file_number | @backup_set_file_number }
Identifica o conjunto de backup a ser restaurado. Por exemplo, uma backup_set_file_number de 1 indica o primeiro conjunto de backup na mídia de backup e uma backup_set_file_number de 2 indica o segundo conjunto de backup. Você pode obter o backup_set_file_number de um conjunto de backup usando a instrução RESTORE HEADERONLY.

Quando essa opção não é 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 RESTORE Arguments (Transact-SQL).

MOVER 'logical_file_name_in_backup' PARA 'operating_system_file_name' [ ,...n ]
Especifica que os dados ou o arquivo de log especificado por logical_file_name_in_backup devem ser restaurados para o local especificado por 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 dados ou de log no conjunto de backup. O nome de arquivo lógico de um arquivo de dados ou de log em um conjunto de backup corresponde ao seu nome lógico no banco de dados quando o conjunto de backup foi criado.



Nota: Para obter uma lista dos arquivos lógicos do conjunto de backup, use RESTORE FILELISTONLY.
nome_do_ficheiro_do_sistema_operativo Especifica um novo local para o arquivo especificado por logical_file_name_in_backup. O arquivo é restaurado para este local.

Opcionalmente, operating_system_file_name especifica um novo nome de arquivo para o arquivo restaurado. Isso é necessário se você estiver criando uma cópia de um banco de dados existente na mesma instância do 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 chamado MyAdvWorks restaurando um backup do banco de dados de exemplo AdventureWorks2022, que inclui dois arquivos: AdventureWorks2022_Data e AdventureWorks2022_Log. Esse banco de dados usa o modelo de recuperação simples. O banco de dados AdventureWorks2022 já existe na instância do servidor, portanto, os arquivos no backup devem ser restaurados para 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 backup e restauração do log de transações, incluindo restaurações point-in-time, usam o banco de dados MyAdvWorks_FullRM criado a partir de AdventureWorks2022 assim como o exemplo de MyAdvWorks a seguir. No entanto, o banco de dados MyAdvWorks_FullRM resultante deve ser alterado para usar o modelo de recuperação completa usando a 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.  
-- AdventureWorks2022_Backup is the name of the backup device.  
RESTORE FILELISTONLY  
   FROM AdventureWorks2022_Backup;  
-- Restore the files for MyAdvWorks.  
RESTORE DATABASE MyAdvWorks  
   FROM AdventureWorks2022_Backup  
   WITH RECOVERY,  
   MOVE 'AdventureWorks2022_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',   
   MOVE 'AdventureWorks2022_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 AdventureWorks2022, consulte Criar um backup completo de banco de dados (SQL Server).

Tarefas relacionadas

Ver também