Espelhamento de banco de dados e instantâneos de banco de dados

Você pode aproveitar um banco de dados espelho que seja mantido 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 dirigir as solicitações de conexão de clientes ao 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çãoObservação

Para obter mais informações sobre instantâneos de bancos de dados, consulte Instantâneos do Banco de Dados.

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çãoObservação

Para uma solução de relatórios dedicada que seja bem dimensionável, pense em replicação. Para obter mais informações, consulte Armazenamento de dados e geração de relatório.

Exemplo

Este 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 AdventureWorks2008R2. Este exemplo cria três instantâneos do banco de dados na cópia espelhada do banco de dados AdventureWorks2008R2, que reside na unidade F. Os instantâneos são denominados AdventureWorks2008R2_0600, AdventureWorks2008R2_1200 e AdventureWorks2008R2_1800 para identificar o horário aproximado de sua criação.

  1. Crie o primeiro instantâneo do banco de dados no espelho de AdventureWorks2008R2.

    CREATE DATABASE AdventureWorks2008R2_0600
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks2008R2_0600.SNP')
       AS SNAPSHOT OF AdventureWorks2008R2;
    
  2. Crie o segundo instantâneo do banco de dados no espelho de AdventureWorks2008R2. Os usuários que ainda estejam usando o AdventureWorks2008R2_0600 podem continuar a usá-lo.

    CREATE DATABASE AdventureWorks2008R2_1200
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWork2008R2s_1200.SNP')
       AS SNAPSHOT OF AdventureWorks2008R2;
    

    Neste momento, novas conexões de cliente podem ser dirigidas programaticamente ao instantâneo mais recente.

  3. Crie o terceiro instantâneo do banco de dados no espelho AdventureWorks2008R2. Os usuários que ainda estejam usando o AdventureWorks2008R2_0600 ou o AdventureWorks2008R2_1200 podem continuar a usá-los.

    CREATE DATABASE AdventureWorks2008R2_1800
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks2008R2_1800.SNP')
        AS SNAPSHOT OF AdventureWorks2008R2;
    

    Neste momento, novas conexões de cliente podem ser dirigidas programaticamente ao instantâneo mais recente.

Para criar um instantâneo do banco de dados

Para exibir um instantâneo do banco de dados

Para excluir um instantâneo do banco de dados