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.

Limitaçõ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

  • Ao usar o 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 Fazer backup de um log de transaçõ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 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 reconstruirá, dependendo da configuração da upgrade_option propriedade do servidor. Se a opção de atualização estiver definida como 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. Além disso, 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 upgrade_option propriedade do servidor, use sp_fulltext_service.

Segurança

Por motivos de segurança, não recomendamos que anexe ou 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 deverá ter CREATE DATABASE permissões para poder executar RESTOREo . Se o banco de dados existir, RESTORE as permissões padrão para membros das funções de servidor fixas sysadmin e dbcreator e o proprietário (dbo) do banco de dados.

RESTORE As permissões 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 RESTORE permissões.

Restaure um banco de dados para um novo local e, 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, em seguida, no Pesquisador de Objetos, selecione o nome do servidor para expandir a árvore do servidor.

  2. Clique com o botão direito do mouse em Bancos de Dados e selecione Restaurar Banco de Dados.... A caixa de diálogo Restaurar banco de dados é aberta.

  3. Na página Geral , na seção Origem , especifique a origem e o local dos conjuntos de backup a serem restaurados. Selecione uma das seguintes opções:

    • Base de Dados

      Selecione o banco de dados a ser restaurado na lista suspensa. A lista contém apenas bancos de dados cujo backup foi feito de acordo com o histórico de msdb backup.

      Observação

      Se o backup for criado a partir 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 Procurar (...) 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 que deseja adicionar à lista Mídia de backup , selecione OK para retornar à página Geral .

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

      Observação

      Esta lista só está disponível quando Dispositivo está selecionado. Somente bancos de dados com backups no dispositivo selecionado estã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 Para o último backup feito ou selecione 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 Linha do tempo de backup para obter mais informações sobre como designar um point-in-time específico.

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

Restaure o banco de dados para um novo local e, opcionalmente, renomeie o banco de dados usando o 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 mostra a sintaxe básica para retornar uma lista do banco de dados e dos arquivos de log contidos no conjunto de backup:

    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í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 WITH opções. Para obter mais informações, consulte RESTORE FILELISTONLY.

  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 MOVE opção 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 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 há espaço suficiente disponível e identificar possíveis colisões com arquivos existentes. Essa verificação envolve o uso de uma instrução RESTORE - VERIFYONLY que especifica os mesmos MOVE parâmetros que você planeja usar em sua RESTORE DATABASE instrução.

As informações a seguir descrevem argumentos dessa RESTORE instrução relacionados à restauração de um banco de dados para um novo local. Para obter mais informações sobre esses argumentos, consulte Instruções RESTORE.

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 entre 1 e 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 pode especificar um dispositivo de backup lógico correspondente, se um estiver definido. Para especificar um dispositivo de backup físico, use a DISK opção ou TAPE :

{ DISCO | FITA } = physical_backup_device_name

Para obter mais informações, consulte Dispositivos de backup.

{ 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 NORECOVERY opção.

Caso contrário, use a RECOVERY opção, que é o padrão.

ARQUIVO = { backup_set_file_number | @backup_set_file_number }

Identifica o conjunto de backup a ser restaurado. Por exemplo, um backup_set_file_number de indica o primeiro conjunto de backup na mídia de 1 backup e um backup_set_file_number de indica o segundo conjunto de 2 backup. Você pode obter o backup_set_file_number de um conjunto de backup usando as instruções RESTORE - instrução 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 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 MOVE instrução 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 instruções RESTORE - FILELISTONLY.
operating_system_file_name Especifica um novo local para o arquivo especificado pelo 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. Um novo nome será 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 indicando que você pode especificar instruções adicionais MOVE .

Exemplo (Transact-SQL)

Este exemplo cria um novo banco de dados nomeado MyAdvWorks restaurando um backup do AdventureWorks2025 banco de dados de exemplo, que inclui dois arquivos: AdventureWorks2025_Data e AdventureWorks2025_Log. Esse banco de dados usa o modelo de recuperação simples. O banco de dados AdventureWorks2025 já existe na instância do servidor, portanto, os arquivos no backup devem ser restaurados para um novo local. A RESTORE FILELISTONLY instrução é 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 criado a MyAdvWorks_FullRM partir do AdventureWorks2025, assim como 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.
-- 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 AdventureWorks2025 banco de dados, consulte Criar um backup de banco de dados completo.