Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Este tópico descreve como preparar um banco de dados para um grupo de disponibilidade Always On no SQL Server usando o SQL Server Management Studio, Transact-SQL ou PowerShell. A preparação de um banco de dados requer duas etapas:
- Restaure um backup de banco de dados recente do banco de dados primário e backups de log subsequentes em cada instância do servidor que hospeda a réplica secundária, usando RESTORE WITH NORECOVERY
- Junte o banco de dados restaurado ao grupo de disponibilidade.
Dica
Se tiver uma configuração existente de envio de registos, poderá converter o banco de dados primário de envio de registos, juntamente com um ou mais dos seus bancos de dados secundários, numa réplica primária de um grupo de disponibilidade e numa ou mais réplicas secundárias. Para obter mais informações, consulte Pré-requisitos para migrar do Log Shipping para Always On Availability Groups (SQL Server).
Pré-requisitos e restrições
Verifique se o sistema onde você planeja colocar o banco de dados possui uma unidade de disco com espaço suficiente para os bancos de dados secundários.
O nome do banco de dados secundário deve ser o mesmo que o nome do banco de dados primário.
Use RESTORE WITH NORECOVERY para cada operação de restauração.
Se o banco de dados secundário precisar residir num caminho de ficheiro diferente (incluindo a letra da unidade) do banco de dados primário, o comando de restauro também deverá usar a opção "WITH MOVE" para cada um dos arquivos de banco de dados para definir o caminho do banco de dados secundário.
Se você restaurar o grupo de arquivos do banco de dados por grupo de arquivos, certifique-se de restaurar todo o banco de dados.
Depois de restaurar a base de dados, deve restaurar (WITH NORECOVERY) cada backup de log criado desde o último backup de dados restaurado.
Recomendações
Em instâncias autônomas do SQL Server, recomendamos que, se possível, o caminho do arquivo (incluindo a letra da unidade) de um determinado banco de dados secundário seja idêntico ao caminho do banco de dados primário correspondente. Isso ocorre porque se você mover os arquivos de banco de dados ao criar um banco de dados secundário, uma operação de arquivo adicional posterior poderá falhar no banco de dados secundário e fazer com que o banco de dados secundário seja suspenso.
Antes de preparar seus bancos de dados secundários, é altamente recomendável suspender os backups de log agendados nos bancos de dados do grupo de disponibilidade até que a inicialização das réplicas secundárias seja concluída.
Segurança
Quando é feito backup de um banco de dados, a propriedade de banco de dados TRUSTWORTHY é definida como OFF. Portanto, TRUSTWORTHY está sempre DESLIGADO em um banco de dados recém-restaurado.
Permissões
As permissões de BACKUP DATABASE e BACKUP LOG por padrão são atribuídas aos membros da função de servidor fixa sysadmin e das funções de banco de dados fixas db_owner e db_backupoperator. Para obter mais informações, consulte BACKUP (Transact-SQL).
Quando o banco de dados que está sendo restaurado não existe na instância do servidor, a instrução RESTORE requer permissões CREATE DATABASE. Para obter mais informações, consulte RESTORE (Transact-SQL).
Usar o SQL Server Management Studio
Observação
Se os caminhos dos arquivos de backup e restauração forem idênticos entre a instância do servidor que hospeda a réplica primária e cada instância que hospeda uma réplica secundária, você deverá ser capaz de criar bancos de dados de réplica secundária com Assistente para Novo Grupo de Disponibilidade, Assistente para Adicionar Réplica ao Grupo de Disponibilidadeou Assistente para Adicionar Banco de Dados ao Grupo de Disponibilidade.
Para preparar um banco de dados secundário
A menos que você já tenha um backup de banco de dados recente do banco de dados primário, crie um novo backup de banco de dados completo ou diferencial. Como prática recomendada, coloque esse backup e todos os backups de log subsequentes no compartilhamento de rede recomendado.
Crie pelo menos um novo backup de log do banco de dados primário.
Observação
Um backup de log de transações pode não ser necessário se um backup de log de transações não tiver sido capturado anteriormente no banco de dados na réplica primária. A Microsoft recomenda fazer um backup de log de transações sempre que um novo banco de dados for associado ao grupo de disponibilidade.
Na instância do servidor que hospeda a réplica secundária, restaure o backup completo do banco de dados primário (e, opcionalmente, um backup diferencial) seguido por todos os backups de log subsequentes.
Na página Opções de RESTAURAR BASE DE DADOS, selecione Deixar a base de dados não operacional e não reverter as transações não confirmadas. Registos de transações adicionais podem ser restaurados. (RESTAURAR COM NORECOVERY).
Se os caminhos de arquivo do banco de dados primário e do banco de dados secundário diferirem, por exemplo, se o banco de dados primário estiver na unidade 'F:', mas a instância do servidor que hospeda a réplica secundária não tiver uma unidade F:, inclua a opção MOVE na cláusula WITH.
Para concluir a configuração do banco de dados secundário, você precisa unir o banco de dados secundário ao grupo de disponibilidade. Para mais informações, consulte Associar um Banco de Dados Secundário a um Grupo de Disponibilidade (SQL Server).
Observação
Para obter informações sobre como executar essas operações de backup e restauração, consulte Related Backup and Restore Tasks, mais adiante nesta seção.
Tarefas de backup e restauração relacionadas
Para criar um backup de banco de dados
Para criar um backup de log
Para restaurar backups
Usando Transact-SQL
Para preparar um banco de dados secundário
Observação
Para obter um exemplo desse procedimento, consulte Exemplo (Transact-SQL), anteriormente neste tópico.
A menos que você tenha um backup completo recente do banco de dados primário, conecte-se à instância do servidor que hospeda a réplica primária e crie um backup completo do banco de dados. Como prática recomendada, coloque esse backup e todos os backups de log subsequentes no compartilhamento de rede recomendado.
Na instância do servidor que hospeda a réplica secundária, restaure o backup completo do banco de dados primário (e, opcionalmente, um backup diferencial) seguido por todos os backups de log subsequentes. Use WITH NORECOVERY para cada operação de restauração.
Se os caminhos de arquivo do banco de dados primário e do banco de dados secundário diferirem, por exemplo, se o banco de dados primário estiver na unidade 'F:', mas a instância do servidor que hospeda a réplica secundária não tiver uma unidade F:, inclua a opção MOVE na cláusula WITH.
Se algum backup de log tiver sido feito no banco de dados primário desde o backup de log necessário, você também deverá copiá-los para a instância do servidor que hospeda a réplica secundária e aplicar cada um desses backups de log ao banco de dados secundário, começando com o mais antigo e sempre usando RESTORE WITH NORECOVERY.
Observação
Um backup de log não existiria se o banco de dados primário tivesse acabado de ser criado e nenhum backup de log ainda tivesse sido feito ou se o modelo de recuperação tivesse acabado de ser alterado de simples para completo.
Para concluir a configuração do banco de dados secundário, você precisa unir o banco de dados secundário ao grupo de disponibilidade. Para mais informações, consulte Associar um Banco de Dados Secundário a um Grupo de Disponibilidade (SQL Server).
Observação
Para obter informações sobre como executar essas operações de backup e restauração, consulte Related Backup and Restore Tasks, mais adiante neste tópico.
Transact-SQL Exemplo
O exemplo a seguir prepara um banco de dados secundário. Este exemplo usa o banco de dados de exemplo AdventureWorks2025, que usa o modelo de recuperação simples por padrão.
Para usar o banco de dados
AdventureWorks2025, modifique-o para usar o modelo de recuperação completa:USE master; GO ALTER DATABASE MyDB1 SET RECOVERY FULL; GODepois de modificar o modelo de recuperação do banco de dados de SIMPLE para FULL, crie um backup completo, que pode ser usado para criar o banco de dados secundário. Como o modelo de recuperação acabou de ser alterado, a opção WITH FORMAT é especificada para criar um novo conjunto de mídias. Isso é útil para separar os backups sob o modelo de recuperação completa de quaisquer backups anteriores feitos sob o modelo de recuperação simples. Para este exemplo, o arquivo de backup (C:\
AdventureWorks2025.bak) é criado na mesma unidade que o banco de dados.Observação
Para um banco de dados de produção, você deve sempre fazer backup em um dispositivo separado.
Na instância do servidor que hospeda a réplica primária (
INSTANCE01), crie um backup completo do banco de dados primário da seguinte maneira:BACKUP DATABASE MyDB1 TO DISK = 'C:\MyDB1.bak' WITH FORMAT GOCopie o backup completo para a instância do servidor que hospeda a réplica secundária.
Restaure o backup completo, usando RESTORE WITH NORECOVERY, na instância do servidor que hospeda a réplica secundária. O comando restore depende se os caminhos dos bancos de dados primários e secundários são idênticos.
Se os caminhos forem idênticos:
No computador que hospeda a réplica secundária, restaure o backup completo da seguinte maneira:
RESTORE DATABASE MyDB1 FROM DISK = 'C:\MyDB1.bak' WITH NORECOVERY GOSe os caminhos diferirem:
Se o caminho do banco de dados secundário for diferente do caminho do banco de dados primário (por exemplo, as letras das suas unidades de disco diferirem), a criação do banco de dados secundário exigirá que a operação de restauração inclua uma cláusula MOVE.
Importante
Se os nomes dos caminhos dos bancos de dados primário e secundário forem diferentes, não será possível adicionar um arquivo. Isso ocorre porque, ao receber o log para a operação de adição de arquivo, a instância do servidor da réplica secundária tenta colocar o novo arquivo no mesmo caminho usado pelo banco de dados primário.
Por exemplo, o comando a seguir restaura um backup de um banco de dados primário que reside no diretório de dados da instância padrão do SQL Server, C:\Arquivos de Programas\Microsoft SQL Server\MSSQL12. MSSQLSERVER\MSSQL\DATA. A operação de restauração do banco de dados deve mover o banco de dados para o diretório de dados de uma instância remota do SQL Server chamada (Always On1), que hospeda a réplica secundária em outro nó de cluster. Lá, os dados e arquivos de log são restaurados para o diretório C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA. A operação de restauração usa WITH NORECOVERY, para deixar o banco de dados secundário no banco de dados de restauração.
RESTORE DATABASE MyDB1 FROM DISK='C:\MyDB1.bak' WITH NORECOVERY, MOVE 'MyDB1_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.mdf', MOVE 'MyDB1_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.ldf'; GO
Depois de restaurar o backup completo, você deve criar um backup de log no banco de dados primário. Por exemplo, a instrução Transact-SQL a seguir faz backup do log para um arquivo de backup chamado E:\MyDB1_log.trn:
BACKUP LOG MyDB1 TO DISK = 'E:\MyDB1_log.trn' GOAntes de unir o banco de dados à réplica secundária, deve-se aplicar o backup de log necessário (e quaisquer backups de log subsequentes).
Por exemplo, a seguinte instrução Transact-SQL restaura o primeiro log do C:\MyDB1.trn:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=1, NORECOVERY GOSe ocorrerem backups de log adicionais antes que o banco de dados ingresse na réplica secundária, você também deverá restaurar todos esses backups de log, em sequência, para a instância do servidor que hospeda a réplica secundária usando RESTORE WITH NORECOVERY.
Por exemplo, a instrução Transact-SQL a seguir restaura dois logs adicionais do E:\MyDB1_log.trn :
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=2, NORECOVERY GO RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=3, NORECOVERY GO
Usando o PowerShell
Para preparar um banco de dados secundário
Se você precisar criar um backup recente do banco de dados primário, altere o diretório (cd) para a instância do servidor que hospeda a réplica primária.
Use o cmdlet Backup-SqlDatabase para criar cada um dos backups.
Altere o diretório (cd) para a instância do servidor que hospeda a réplica secundária.
Para restaurar o banco de dados e os backups de log de cada banco de dados primário, use o cmdlet restore-SqlDatabase, especificando o parâmetro de recuperação NoRecovery. Se os caminhos de arquivo forem diferentes entre os computadores que hospedam a réplica primária e a réplica secundária de destino, use também o parâmetro RelocateFile restaurar.
Observação
Para exibir a sintaxe de um cmdlet, use o cmdlet Get-Help no ambiente do SQL Server PowerShell. Para obter mais informações, consulte Obter Ajuda do SQL Server PowerShell.
Para concluir a configuração do banco de dados secundário, você precisa associá-lo ao grupo de disponibilidade. Para mais informações, consulte Associar um Banco de Dados Secundário a um Grupo de Disponibilidade (SQL Server).
Para configurar e usar o provedor do SQL Server PowerShell
Exemplo de script e comando de backup e restauração
Os comandos do PowerShell a seguir fazem backup de um backup de banco de dados completo e um log de transações em um compartilhamento de rede e restauram esses backups desse compartilhamento. Este exemplo pressupõe que o caminho do arquivo para o qual o banco de dados é restaurado é o mesmo que o caminho do arquivo no qual foi feito o backup do banco de dados.
# Create database backup
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"
# Create log backup
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"
# Restore database backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"
# Restore log backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery -ServerInstance "DestinationMachine\Instance"
Próximos passos
Para concluir a configuração do banco de dados secundário, associe o banco de dados recém-restaurado ao grupo de disponibilidade. Para obter mais informações, consulte Associar um Banco de Dados Secundário a um Grupo de Disponibilidade (SQL Server).
Ver também
Visão geral dos grupos de disponibilidade Always On (SQL Server)
CÓPIA DE SEGURANÇA (Transact-SQL)
Argumentos RESTORE (Transact-SQL)
RESTAURAR (Transact-SQL)
solucionar problemas de uma operação de Add-File com falha (grupos de disponibilidade Always On)