Snapshot de banco de dados – uma feature esquecida

Fala galera,

Neste vídeo mostro como criar e pra que serve um snapshot de banco de dados, uma fotografia de um determinado momento de toda sua base.

Este recurso é particularmente interessante se em algum momento sua base sofrerá uma série de alterações (e você fica sabendo antes porque te avisaram) e você precisa reverter rapidamente toda sua base de dados para o estado original antes das alterações.

No vídeo mostro como criar um snapshot, como gerar o script pro mesmo e como reverter uma base com ele.

Atenção: O Snapshot NÃO é uma solução de backup!!! Nunca substitua um pelo outro, o Snap é apenas um complemento que pode te ajudar a ganhar tempo.

Use por sua própria conta e risco, testado em um SQL SERVER 2014.

Happy SQL SERVING!

[feather_share]

 

Cria a base de dados:

[sql]

–USE [master]
GO

–cria a base de dados
CREATE DATABASE [snapteste]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N’snapteste_1′, FILENAME = N’F:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\snapteste_1.mdf’ , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
( NAME = N’snapteste_2′, FILENAME = N’F:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\snapteste_2.ndf’ , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
( NAME = N’snapteste_3′, FILENAME = N’F:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\snapteste_3.ndf’ , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N’snapteste_log’, FILENAME = N’F:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\snapteste_log.ldf’ , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

———————————————————————————-
[/sql]

Gera a estrutura de datafiles para o script:

[sql]
–gera os caminhos de snapshot
select ‘( name = ‘+name+’, filename = ”’+’F:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\SShots\’+name+’.ss”’+’),’
from sys.master_files
where db_name(database_id) = ‘snapteste’ –nome da base
and type = 0 –somente arquivos de dados
GO
——————————————————————————–
[/sql]

Manipula o Snapshot:

[sql]
–cria o snapshot
CREATE DATABASE snapteste_snap_2200
on
( name = snapteste_1, filename = ‘F:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\SShots\snapteste_1.ss’),
( name = snapteste_2, filename = ‘F:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\SShots\snapteste_2.ss’),
( name = snapteste_3, filename = ‘F:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\SShots\snapteste_3.ss’)
as snapshot of snapteste;
GO

–elimina o snapshot:
–nunca execute!
–drop database snapteste_snap_2200

–Sintaxe do comando de snapshot:
CREATE DATABASE database_snapshot_name
ON
(
NAME = logical_file_name,
FILENAME = ‘os_file_name’
) [ ,…n ]
AS SNAPSHOT OF source_database_name

————————————————————————————————-
–cria tabela de teste
use snapteste
GO
create table baloon_dados
(id uniqueidentifier primary key,
mensagem varchar(500))

–loop de inserção
set nocount on
insert into baloon_dados(id,mensagem)values(newid(),’teste-mensagem’+cast(newid() as varchar(300)))
go 10000
–veja os dados
GO
use snapteste
GO
select * from baloon_dados
GO

GO
use snapteste_snap_2200;
GO
select * from baloon_dados

–1: 1000 linhas – no snapshot
–2: 11000 linhas

–limpa a tabela
–cuidado
–truncate table baloon_dados
——————————————————————————————-

–reverter a base de dados:
restore database snapteste from database_snapshot = ‘snapteste_snap_2200’

[/sql]

Referência: https://msdn.microsoft.com/en-us/library/ms175158.aspx


 

Failover Cluster Virtual – SQL SERVER 2008 R2

Fala pessoal, tudo bem?

Neste post vou apresentar uma série de videos que criei para ajudar vocês a criar do zero um cluster virtualizado.

O que utilizei:

  • Freenas 9.2;
  • VMware Workstation (9 ou 10);
  • Iso do Windows server 2008 R2 (sem piratear heim! ;-));
  • Iso do SQL SERVER 2008 R2 (mesma dica de cima!);

Estou testando o cluster em uma máquina física de 16 Gb de RAM e estou utilizando em torno de 150 Gb de espaço em disco. No caso estou usando um processador i7.

 

Espero que gostem e seja útil.

Parte 1 – Criação do storage:

Parte 2 – Criando o AD:

Parte 3.1: Instalando o Sistema Operacional dos servidores do cluster e gerando templates.

ps: Sim, eu dividi a parte 3 em duas, caso contrário os videos ficariam muito extensos.

Parte 3.2: Configurando o cluster no Windows:

Parte 4, final – instalando o SQL SERVER no Cluster:

É isso pessoal, espero que gostem e seja útil de alguma forma. Pelo menos para brincar!

Abraços!

Marcelo

 

Configuração de Memória no SQL SERVER

Fala pessoal,

Neste post vou falar sobre os limites e melhores práticas a respeito de configurações de memória no SQL SERVER.

O funcionamento

O SQL SERVER possui dois limites configuráveis de alocação de memória: inferior e superior.
Quando o serviço do mesmo é iniciado apenas uma pequena quantidade de memória é alocada (o suficiente para alocar as estruturas de funcionamento de buffers), não necessariamente o limite inferior configurado.
Quando o SQL SERVER alcançar o limite mínimo ele manterá o Buffer Cache no mínimo neste valor. O limite máximo indica para o SGBD não ultrapassar determinado valor de alocação de memória.
Vale lembrar que este limite configurável determina apenas o valor do Buffer Cache, o SQL SERVER normalmente necessita de mais 20% de memória para funcionamento adequado.

memoria SQL SERVER - mantenha configurada!

A boa prática

O ideal assim que terminamos de instalar a instância do SQL SERVER é reservar um valor específico como limite mínimo e um valor superior como limite máximo. Respeitando os seguintes fatores:

  • O SQL SERVER vai consumir em média mais 20% de memória acima do limite máximo e;
  • O Sistema Operacional também precisa trabalhar! Deixe em torno de 20% da memória total do servidor para ele.

A péssima prática

Consideramos péssimas práticas:

  1. Deixar de configurar os limites de memória do SQL SERVER;
  2. Configurar os limites de memória com valores iguais.

São péssimas práticas porque:

  1. Caso o S.O. sinalize pressão de memória o SQL não vai liberar nada;
  2. Mesma situação, não será possível dar uma “folga” para o S.O. caso haja pressão externa de memória.

Abaixo o vídeo com a nossa experiência: