Partilhar via


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

Este tópico descreve como restaurar um banco de dados do SQL Server para um novo local e, opcionalmente, renomear o banco de dados no SQL Server 2014 usando o SQL Server Management Studio 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.

Nesse Tópico

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 atualmente usando o banco de dados a ser restaurado.

Pré-requisitos

Recomendações

  • 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 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 deve ser mantido desde que o backup seja necessário. Para obter mais informações, consulte SQL Server Certificates and Asymmetric Keys.

  • Para obter informações sobre considerações adicionais para mover 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 superior para o SQL Server 2014, 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 tiver índices de texto completo, o processo de atualização importará, redefinirá ou os recriará, dependendo das configurações da propriedade de servidor upgrade_option. Se a opção de atualização for definida como importar (upgrade_option = 2) ou recriar (upgrade_option = 0), os índices de texto completo permanecerão indisponí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 recompilação pode levar até dez vezes mais tempo. 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

Para fins de segurança, recomendamos que você não anexe ou restaure bancos de dados de fontes desconhecidas ou não confiáveis. Esses bancos de dados podem conter um código mal-intencionado que pode executar um código Transact-SQL inesperado ou provocar 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 de não produção e examine também 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 RESTORE. Se o banco de dados existir, as permissões RESTORE são automaticamente concedidas aos membros das funções de servidor fixas sysadmin e dbcreator e ao proprietário (dbo) do banco de dados.

As permissões RESTORE são fornecidas a funções nas quais as informações de associação estão sempre prontamente disponíveis para o servidor. Como a associação de função de banco de dados fixa só pode ser verificada quando o banco de dados está acessível e não danificado, o que nem sempre ocorre quando RESTORE é executado, os membros do db_owner função de banco de dados fixa não têm permissões RESTORE.

Como usar o SQL Server Management Studio.

Para restaurar um banco de dados para um novo local e, opcionalmente, renomear o banco de dados

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

  2. 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.

  3. 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 seguintes opções:

    • 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.

    1. 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.

  4. 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 .

  5. Na caixa Restaurar para , deixe o padrão como Para o último backup feito ou clique em Linha do Tempo para acessar a caixa de diálogo Linha do Tempo de Backup para selecionar manualmente um ponto no tempo para interromper a ação de recuperação. Consulte a Linha do Tempo de Backup para obter mais informações sobre como designar 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, um plano de recuperação é sugerido. Para substituir o plano de recuperação sugerido, você pode modificar as seleções na tabela. 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 na grade Conjuntos de backup a serem restaurados, 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 clique em Realocar todos os arquivos para a pasta. Forneça um novo local para a pasta de arquivo de dados e a pasta de arquivo de log. Para obter mais informações sobre essa grade, consulte Restaurar Banco de Dados (Página Arquivos).

  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).

Usando Transact-SQL

Para restaurar um banco de dados para um novo local e, opcionalmente, renomear o banco de dados

  1. Opcionalmente, determine os nomes lógicos e físicos dos arquivos no conjunto de backup que contém o backup completo do banco de dados que você deseja restaurar. Essa instrução retorna uma lista dos 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 usando a instrução RESTORE HEADERONLY . Para obter mais informações, consulte "Especificando um conjunto de backup" em argumentos RESTORE (Transact-SQL).

    Essa instrução também dá suporte a várias opções WITH. 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 é:

    RESTAURAR BANCO DE DADOS new_database_name

    FROM backup_device [ ,... n ]

    [ WITH

    {

    [ RECUPERAÇÃO | NORECOVERY ]

    [ , ] [ FILE ={ backup_set_file_number | @backup_set_file_number } ]

    [ , ] MOVER 'logical_file_name_in_backup' para '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 na 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 do 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 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:

    { DISCO | 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, 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.

    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 no meio 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 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 Argumentos RESTORE (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
    nome_do_arquivo_lógico_no_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 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.
    nome_do_arquivo_do_sistema_operacional Especifica um novo local para o arquivo especificado por logical_file_name_in_backup. O arquivo será restaurado para esse 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 nomeado MyAdvWorks restaurando 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 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 pontuais, utilizam o banco de dados MyAdvWorks_FullRM criado a partir do AdventureWorks2012, da mesma forma que o exemplo a seguir MyAdvWorks. No entanto, o banco de dados resultante MyAdvWorks_FullRM 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.  
-- 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 Create a Full Database Backup (SQL Server).

Tarefas Relacionadas

Consulte Também

Gerenciar metadados ao disponibilizar um banco de dados em outra instância do servidor (SQL Server)
RESTORE (Transact-SQL)
Copiar bancos de dados com backup e restauração