Espelhamento de banco de dados e instantâneos de banco de dados (SQL Server)
Aplica-se a: SQL Server
Você pode tirar proveito de um banco de dados espelho que você está mantendo para fins de disponibilidade para descarregar relatórios. Para usar um banco de dados espelho para relatórios, você pode criar um instantâneo do banco de dados no banco de dados espelho e direcionar as solicitações de conexão de clientes para o instantâneo mais recente. Um instantâneo do banco de dados é um instantâneo consistente de transações, estático e somente leitura de seu banco de dados de origem tal como ele estava no momento da criação do instantâneo. Para criar um instantâneo do banco de dados em um banco de dados espelho, o banco de dados precisa estar no estado de espelhamento sincronizado.
Ao contrário do próprio banco de dados espelho, um instantâneo do banco de dados está acessível aos clientes. Contanto que o servidor espelho esteja se comunicando com o servidor principal, você pode dirigir os clientes que estejam inserindo informações para que se conectem a um instantâneo. Observe que devido ao fato de o instantâneo do banco de dados ser estático, os novos dados não estão disponíveis. Para tornar dados relativamente recentes disponíveis a seus usuários, você precisa criar periodicamente um novo instantâneo do banco de dados e fazer com que os aplicativos dirijam as conexões de entrada de clientes para o instantâneo mais recente.
Um novo instantâneo do banco de dados está quase vazio, mas cresce com o tempo, conforme mais e mais páginas do banco de dados são atualizadas pela primeira vez. Como todo instantâneo em um banco de dados cresce incrementalmente desse modo, cada instantâneo do banco de dados consome os mesmos recursos que um banco de dados normal. Dependendo das configurações do servidor espelho e do servidor principal, um número excessivo de instantâneos de banco de dados em um banco de dados espelho pode diminuir o desempenho no banco de dados principal. Portanto, recomendamos que você mantenha só alguns instantâneos relativamente recentes em seus bancos de dados espelhos. Geralmente, depois de criar um instantâneo de substituição, você deve redirecionar as entradas de consultas para o novo instantâneo e descartar o instantâneo mais antigo depois que as consultas atuais forem concluídas.
Observação
Para obter mais informações sobre instantâneos de banco de dados, confira Instantâneos de Banco de Dados (SQL Server).
Se houver troca de função, o banco de dados e seus instantâneos serão reinicializados, desconectando os usuários temporariamente. Depois, os instantâneos do banco de dados permanecem na instância de servidor em que foram criados e que se tornou o novo banco de dados principal. Os usuários podem continuar usando os instantâneos depois do failover. Porém, isso coloca uma carga adicional no novo servidor principal. Se o desempenho for uma preocupação em seu ambiente, recomendamos que você crie um instantâneo no novo banco de dados espelho quando ele se tornar disponível, redirecione os clientes ao novo instantâneo e descarte todos os instantâneos do banco de dados do antigo banco de dados espelho.
Observação
Para uma solução de relatórios dedicada que seja bem dimensionável, pense em replicação. Para obter mais informações, consulte Replicação do SQL Server.
Exemplo
Esse exemplo cria instantâneos em um banco de dados espelho.
Suponha que o banco de dados de uma sessão de espelhamento de banco de dados seja AdventureWorks2022
. Esse exemplo cria três instantâneos do banco de dados na cópia espelhada do banco de dados AdventureWorks
que está na unidade F
. Os instantâneos são nomeados AdventureWorks_0600
, AdventureWorks_1200
e AdventureWorks_1800
para identificar seu horário aproximado de criação.
Crie o primeiro instantâneo do banco de dados no espelho de
AdventureWorks2022
.CREATE DATABASE AdventureWorks_0600 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_0600.SNP') AS SNAPSHOT OF AdventureWorks2022
Crie o segundo instantâneo do banco de dados no espelho de
AdventureWorks2022
. Os usuários que ainda estejam usando oAdventureWorks_0600
podem continuar a usá-lo.CREATE DATABASE AdventureWorks_1200 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1200.SNP') AS SNAPSHOT OF AdventureWorks2022
Neste ponto, novas conexões de cliente podem ser direcionadas programaticamente para o instantâneo mais recente.
Crie o terceiro instantâneo do banco de dados no espelho
AdventureWorks2022
. Os usuários que ainda estejam usando oAdventureWorks_0600
ou oAdventureWorks_1200
podem continuar a usá-los.CREATE DATABASE AdventureWorks_1800 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1800.SNP') AS SNAPSHOT OF AdventureWorks2022
Neste ponto, novas conexões de cliente podem ser direcionadas programaticamente para o instantâneo mais recente.
Related Tasks
Consulte Também
Instantâneos de banco de dados (SQL Server)
Conectar clientes a uma sessão de espelhamento de banco de dados (SQL Server)