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
Antes que uma sessão de espelhamento de banco de dados possa ser iniciada, o proprietário do banco de dados ou o administrador do sistema deve certificar-se de que o banco de dados espelho foi criado e está pronto para espelhamento. Criar um novo banco de dados espelho requer minimamente fazer um backup completo do banco de dados principal e um backup de log subsequente e restaurá-los ambos na instância do servidor espelho, usando WITH NORECOVERY.
Este tópico descreve como preparar um banco de dados espelho no SQL Server usando o SQL Server Management Studio ou o Transact-SQL.
Antes de começar:
Para preparar um banco de dados espelho existente para reiniciar o espelhamento
Acompanhamento:Após preparar a base de dados de espelho
Antes de começar
Requerimentos
As instâncias do servidor principal e do servidor espelho devem estar em execução na mesma versão do SQL Server. Embora seja possível que o servidor espelho tenha uma versão superior do SQL Server, essa configuração só é recomendada durante um processo de atualização cuidadosamente planejado. Nessa configuração, você corre o risco de um failover automático, no qual a movimentação de dados é suspensa automaticamente porque os dados não podem ser movidos para uma versão inferior do SQL Server. Para obter mais informações, veja Atualizar Instâncias Espelhadas.
As instâncias do servidor principal e espelho devem estar em execução na mesma edição do SQL Server. Para obter informações sobre o suporte para espelhamento de banco de dados no SQL Server, consulte Edições e recursos com suporte do SQL Server 2022.
O banco de dados deve usar o modelo de recuperação completa.
Para obter mais informações, consulte Exibir ou alterar o modelo de recuperação de um banco de dados (SQL Server) ou sys.databases (Transact-SQL) e ALTER DATABASE (Transact-SQL).
O nome do banco de dados espelho deve ser o mesmo que o nome do banco de dados principal.
O banco de dados espelho deve estar no estado RESTORING para que o espelhamento funcione. Ao preparar um banco de dados espelho, você deve usar RESTORE WITH NORECOVERY para cada operação de restauração. Minimamente, você precisará restaurar WITH NORECOVERY um backup completo do banco de dados principal, seguido por todos os backups de log subsequentes.
O sistema onde você planeja criar o banco de dados espelho deve possuir uma unidade de disco com espaço suficiente para armazenar o banco de dados espelho.
Limitações e Restrições
Não é possível espelhar os bancos de dados do sistema master, msdb, temp ou model .
Não é possível espelhar um banco de dados que pertença a um grupo de disponibilidade Always On.
Recomendações
Utilize um backup completíssimo recente do banco de dados ou um backup diferencial recente do banco de dados principal.
Se uma tarefa de backup de log estiver agendada para ser executada com muita frequência no banco de dados principal, talvez seja necessário desabilitar a tarefa de backup até que o espelhamento seja iniciado.
Se possível, o caminho (incluindo a letra de disco) da base de dados espelho deve ser idêntico ao caminho da base de dados principal.
Se os caminhos de arquivo devem diferir, por exemplo, se o banco de dados principal está na unidade 'F:', mas o sistema espelho não tem uma unidade F:, você deve incluir a opção MOVE na instrução RESTORE.
Importante
Adicionar um arquivo durante uma sessão de espelhamento sem afetar a sessão requer que o caminho do arquivo exista em ambos os servidores. Portanto, se você mover os arquivos de banco de dados ao criar o banco de dados espelho, uma operação de arquivo adicional posterior poderá falhar no banco de dados espelho e fazer com que o espelhamento seja suspenso. Para obter informações sobre como lidar com uma operação de criação de arquivo com falha, consulte Solucionar problemas de configuração de espelhamento de banco de dados (SQL Server).
Se o banco de dados principal tiver catálogos de texto completo, recomendamos que você veja Espelhamento de Banco de Dados e Catálogos de Full-Text (SQL Server).
Para um banco de dados de produção, sempre faça backup em um dispositivo separado.
Segurança
TRUSTWORTHY é definido como OFF quando é feito backup de um banco de dados. Portanto, TRUSTWORTHY está sempre DESLIGADO numa nova base de dados espelho. Se o banco de dados precisar ser confiável após um failover, etapas adicionais de configuração serão necessárias. Para obter mais informações, consulte Configurar uma base de dados em espelho para usar a propriedade Trustworthy (Transact-SQL).
Para obter informações sobre como habilitar a descriptografia automática da chave mestra do banco de dados de um banco de dados espelho, consulte Configurar um banco de dados espelho criptografado.
Permissões
Proprietário do banco de dados ou administrador do sistema.
Para preparar um banco de dados espelho existente para reiniciar o espelhamento
Se o espelhamento tiver sido removido e o banco de dados espelho ainda estiver no estado de RECUPERAÇÃO, é possível reiniciar o espelhamento.
Faça pelo menos um backup de log no banco de dados principal. Para obter mais informações, consulte Fazer cópia de segurança de um registo de transações (SQL Server).
No banco de dados espelho, utilize RESTORE WITH NORECOVERY para restaurar todos os backups de log feitos no banco de dados principal desde que o espelhamento foi desativado. Para obter mais informações, consulte Restaurar um backup de log de transações (SQL Server).
Para preparar um novo banco de dados espelho
Para preparar um banco de dados espelho
Observação
Para obter um Transact-SQL exemplo deste procedimento, consulte o Exemplo (Transact-SQL), mais adiante nesta seção.
Conecte-se à instância do servidor principal.
Crie um backup de banco de dados completo ou um backup de banco de dados diferencial do banco de dados principal.
Normalmente, você precisa fazer pelo menos um backup de log no banco de dados principal. No entanto, um backup de log pode ser desnecessário, se o banco de dados tiver acabado de ser criado e nenhum backup de log tiver sido feito ainda, ou se o modelo de recuperação tiver acabado de ser alterado de SIMPLE para FULL.
A menos que os backups estejam em uma unidade de rede acessível a partir de ambos os sistemas, copie os backups de banco de dados e de log para o sistema que hospedará a instância do servidor espelho.
Conecte-se à instância do servidor espelho.
Usando RESTORE WITH NORECOVERY, crie o banco de dados espelho restaurando o backup completo do banco de dados e, opcionalmente, o backup de banco de dados diferencial mais recente, na instância do servidor espelho.
Observação
Se você restaurar o grupo de arquivos do banco de dados por grupo de arquivos, certifique-se de restaurar todo o banco de dados.
Usando RESTORE WITH NORECOVERY, aplique qualquer backup de log pendente ou backups ao banco de dados espelho.
Exemplo (Transact-SQL)
Antes de iniciar uma sessão de espelhamento de banco de dados, você deve criar o banco de dados espelho. Você deve fazer isso antes de iniciar a sessão de espelhamento.
Este exemplo usa o banco de dados de exemplo AdventureWorks2022
, que usa o modelo de recuperação simples por padrão.
Para usar o espelhamento de banco de dados com o
AdventureWorks2022
banco de dados, modifique-o para usar o modelo de recuperação completa:USE master; GO ALTER DATABASE AdventureWorks SET RECOVERY FULL; GO
Depois 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 espelho. 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:\AdventureWorks.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 principal (em
PARTNERHOST1
), crie um backup completo do banco de dados principal da seguinte maneira:BACKUP DATABASE AdventureWorks TO DISK = 'C:\AdventureWorks.bak' WITH FORMAT GO
Copie o backup completo para o servidor espelho.
Usando RESTORE WITH NORECOVERY, restaure o backup completo na instância do servidor espelho. O comando restore depende se os caminhos dos bancos de dados principal e espelho são idênticos.
Se os caminhos forem idênticos:
Na instância do servidor espelho (em
PARTNERHOST5
), restaure o backup completo da seguinte maneira:RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH NORECOVERY GO
Se os caminhos diferirem:
Se o caminho do banco de dados espelho for diferente do caminho do banco de dados principal (por exemplo, se suas letras de unidade forem diferentes), será necessário incluir uma cláusula MOVE na operação de restauração ao criar o banco de dados espelho.
Importante
Se os nomes de caminho dos bancos de dados principal e espelho forem diferentes, não será possível adicionar um arquivo. Isso ocorre porque, ao receber o log para a operação adicionar arquivo, a instância do servidor espelho tenta colocar o novo arquivo no local usado pelo banco de dados principal.
Por exemplo, o comando a seguir restaura um backup de um banco de dados principal residente em C:\Arquivos de Programas\Microsoft SQL Server\MSSQL. n:\MSSQL\Data\ para um local diferente, D:\Arquivos de Programas\Microsoft SQL Server\MSSQL. n:\MSSQL\Data, onde o banco de dados espelho deve residir.
RESTORE DATABASE AdventureWorks FROM DISK='C:\AdventureWorks.bak' WITH NORECOVERY, MOVE 'AdventureWorks_Data' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf', MOVE 'AdventureWorks_Log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf'; GO
Depois de criar o backup completo, você deve criar um backup de log no banco de dados principal. Por exemplo, a instrução Transact-SQL a seguir faz backup do log no mesmo arquivo usado pelo backup completo anterior:
BACKUP LOG AdventureWorks TO DISK = 'C:\AdventureWorks.bak' GO
Antes de iniciar a sincronização, deve aplicar os backups de log necessários (e quaisquer backups de log subsequentes).
Por exemplo, a seguinte instrução Transact-SQL restaura o primeiro log de
C:\AdventureWorks.bak
:RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=1, NORECOVERY GO
Se ocorrerem backups de log adicionais antes de iniciar o espelhamento, você também deverá restaurar todos esses backups de log, em sequência, para o servidor espelho usando WITH NORECOVERY.
Por exemplo, a instrução Transact-SQL a seguir restaura dois logs adicionais de
C:\AdventureWorks.bak
:RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=2, NORECOVERY GO RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=3, NORECOVERY GO
Para obter um exemplo completo de configuração do espelhamento de banco de dados, mostrando a configuração de segurança, preparando o banco de dados espelho, configurando os parceiros e adicionando uma testemunha, consulte Configurando o espelhamento de banco de dados (SQL Server).
Seguimento: Depois de preparar um banco de dados espelho
Se algum backup de log adicional tiver sido feito desde sua operação RESTORE LOG mais recente, você deverá aplicar manualmente cada backup de log adicional, usando RESTORE WITH NORECOVERY.
Inicie a sessão de espelhamento. Para obter mais informações, consulte Estabelecer uma sessão de espelhamento de banco de dados usando a autenticação do Windows (SQL Server Management Studio) ou Estabelecer uma sessão de espelhamento de banco de dados usando a autenticação do Windows (Transact-SQL).
Se você desabilitou o trabalho de backup no banco de dados principal, reative-o.
Se o banco de dados precisar ser confiável após um failover, etapas de configuração adicionais serão necessárias após o início do espelhamento. Para obter mais informações, consulte Configurar uma base de dados em espelho para usar a propriedade Trustworthy (Transact-SQL).
Tarefas relacionadas
Ver também
Espelhamento de Banco de Dados (SQL Server)
Segurança de Transporte de para espelhamento de banco de dados e grupos de disponibilidade Always On (SQL Server)
Configurando o espelhamento de banco de dados (SQL Server)
Fazer backup e restaurar Full-Text catálogos e índices
de espelhamento de banco de dados e catálogos de Full-Text (SQL Server)
espelhamento e replicação de banco de dados (SQL Server)
CÓPIA DE SEGURANÇA (Transact-SQL)
RESTAURAR (Transact-SQL)
Argumentos RESTORE (Transact-SQL)