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
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.
Boa Tarde,
Em sempre prefiro responder isso nos fóruns porque ajuda outras pessoas que acompanham.
No windows voce precisa acessar as pastas que vai fazer backup e restore para configurar o mirror. No SQL precisa ter a permissão desse link:
https://msdn.microsoft.com/en-us/library/ms366346.aspx
Fabricio, Uma duvida
Posso criar uma base read-only e que fique atualizada atraves de uma base mirror?
No mirror vai ter que tirar uma foto da base espelhada (snapshot) para conseguir fazer select nela.
Tem que conferir ainda se só funciona na enterprise isso.
Nunca usei em produção.
SOlução enterprise é o AG enterprise.
Ou replicação de tabelas.