Aguarde… Carregando

Database Mirroring – Configurando um Snapshot no servidor Mirror

Fala Pessoal,

Todos se perguntam se é possível fazer relatórios com a base de dados que está sendo espelhada pelo Database Mirroring. Isso é possível apenas criando um Snapshot dessa database, ou seja, você consegue ter uma foto da base para fazer consultas.

Para criar uma database Read-Only no servidor de mirror temos que criar um snapshot da database que está sendo espelhada com o comando abaixo:

create database Mirror3_Snapshot
on
(Name = Mirror3,
FileName = ‘c:\Mirror3_Snapshot.ss’)
AS SNAPSHOT OF Mirror3

Onde,

Mirror3_Snapshot => Nome da database snapshot

“Name = Mirror3” => Mirror3 é o nome lógico do arquivo mdf da database principal

“c:\Mirror3_Snapshot.ss” => Caminho e nome do Sparse File

“SNAPSHOT OF Mirror3” => Mirror3_Snapshot será uma cópia da database Mirror3

Após a execução desse comando, uma database para consultas já está disponibilizada no servidor mirror. Essa database fica visível na pasta Database Snapshots conforme a figura abaixo:

Como essa database é readonly, não será possível alterar dados na mesma.
Ex: O comando abaixo:

select *
into _Usuarios
from sys.sysusers

Gera o erro:

Entretanto, podemos criar tabelas temporárias para utilizar em nossas rotinas de relatórios, pois elas ficam armazenadas no TempDB. O Comando abaixo é executado com sucesso.

select uid
into #TesteSnapshot
from sys.sysusers

Para manter um servidor D-1 sempre atualizado, podemos executar um job diário às 00:00h com os comandos abaixo:

use master
if OBJECT_ID(‘tempdb..#Processos’) is not null
drop table #Processos

Declare @SpId as varchar(5)
select Cast(spid as varchar(5))SpId
into #Processos
from master.dbo.sysprocesses A
join master.dbo.sysdatabases B on A.DbId = B.DbId
where B.Name =’Mirror3_Snapshot’

while (select count(*) from #Processos) >0
begin
set @SpId = (select top 1 SpID from #Processos)
exec (‘Kill ‘ +     @SpId)
delete from #Processos where SpID = @SpId
end

drop database Mirror3_Snapshot

create database Mirror3_Snapshot
on
(Name = Mirror3,
FileName = ‘c:\Mirror3_Snapshot.ss’)
AS SNAPSHOT OF Mirror3

Dessa forma você teria uma foto do seu ambiente com os dados do dia anterior que poderiam ser utilizados para a geração de relatórios.

Fica a Dica.

Artigos relacionados:

Série de Posts sobre Database Mirroring

Database Mirroring – Como alterar o Operation Mode

Database Mirroring – Operation Mode High Performance – Parte 1

Database Mirroring – Operation Mode High Performance – Parte 2

Database Mirroring – Operation Mode High Performance – Parte 3

Database Mirroring – Operation Mode High Safety Without Failover – Parte 1

Database Mirroring – Operation Mode High Safety Without Failover – Parte 2

Database Mirroring – Operation Mode High Safety with Automatic Failover

Database Mirroring – Tempo Failover – HS With Automatic Failover com Timeout

Database Mirroring – Tirando o servidor de Witness do Mirror em caso de falha

Database Mirroring – Failover manual de várias bases ao mesmo tempo

Gostou desse Post?

Cadastre seu e-mail para receber novos Posts e curta minha Página no Facebook para receber Dicas de Leituras e Eventos sobre SQL Server.

Abraços,

Fabrício Lima

MCITP – Database Administrator

Consultor e Instrutor SQL Server

Trabalha com SQL Server desde 2006

2 thoughts on “Database Mirroring – Configurando um Snapshot no servidor Mirror

  1. Boa tarde Fabrício,
    Estou montando um mirro no sql server 2012, entre 3 maquinas, porém eu gostaria de saber quais são os niveis de permissão que eu devo ter no windows, em relação aos serviços. Qual é melhor estrutura para eu montar o meu mirror?
    Desculpa se aqui não for o local certo de fazer esta postagem
    Obrigado.

Deixe uma resposta

%d blogueiros gostam disto: