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_1200e AdventureWorks_1800 para identificar seu horário aproximado de criação.

  1. 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  
    
  2. Crie o segundo instantâneo do banco de dados no espelho de AdventureWorks2022. Os usuários que ainda estejam usando o AdventureWorks_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.

  3. Crie o terceiro instantâneo do banco de dados no espelho AdventureWorks2022. Os usuários que ainda estejam usando o AdventureWorks_0600 ou o AdventureWorks_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)