segunda-feira, 1 de setembro de 2014

Atualizando estatísticas em paralelo - usp_update_statistics_v1

Olá senhores!

Hoje vou falar de estatísticas de tabelas, mas não de como o SQL Server utiliza ela nos planos, sobre este assunto eu sugiro se inscreverem no Webcast do meu amigo Thiago Alencar neste link. Irei compatilhar hoje uma rotina que utilizo para atualizar as estatísticas das tabelas dos bancos que administro.

Antes de iniciar, recomendo também olharem os scripts do Ola Hallengren neste link. Na página dele temos três rotinas distintas que compõem uma única solução, uma de backup, uma de verificação de consistência e uma de manutenção de índices, minha rotina se interliga com a rotina de manutenção de índices dele em certo momento, denominada IndexOptimize.

Finalmente falando sobre minha rotina, o processo de atualização de estatísticas é uma preocupação que todo DBA (acidental ou não) deve ter. Eu já vi em muitos locais serem utilizados os Maintenance Plans do SQL Server para tal finalidade, porém, eu acho esse recurso muito limitado em alguns pontos: não ter como efetuar a atualização somente de estatísticas que sofreram modificação, definir somente um fullscan ou uma porcentagem para todas as estatísticas e não poder atualizar mais de uma estatística ao mesmo tempo em paralelo.

sexta-feira, 13 de junho de 2014

Monitorando servidores Microsoft SQL Server - It`s free! - Parte 04 - Season Finale

Olá pessoal!

Não deixem de conferir as partes anteriores (parte 01parte 02 e parte 03).

Neste post vamos utilizar, na minha opinião, a forma mais interessante de monitoramento com o Zabbix, o monitoramento via agente. Todo profissional que lida com a plataforma Microsoft em algum momento teve de utilizar o famoso "perfmon" para criar um "Data Collector" ou visualizar em tempo real algum indicador do Windows. 

terça-feira, 27 de maio de 2014

Monitorando servidores Microsoft SQL Server - It`s free! - Parte 03

Olá pessoal!

Dando continuidade as parte 01 e parte 02 dos artigos desta série, vamos configurar a primeira forma de monitoramento do Zabbix utilizando SNMP. Abaixo, a definição que existe no site da Microsoft:

"O protocolo de gerenciamento de rede simples (SNMP) é um padrão de gerenciamento de rede amplamente usado em redes TCP/IP.
O SNMP fornece um método de gerenciamento de hosts de rede, como computadores servidores ou estações de trabalho, roteadores, pontes e concentradores a partir de um computador com uma localização central em que está sendo executado o software de gerenciamento de rede. O SNMP executa serviços de gerenciamento utilizando uma arquitetura distribuída de sistemas de gerenciamento e agentes."
Texto completo aqui.

sábado, 10 de maio de 2014

Monitorando servidores Microsoft SQL Server - It`s free! - Parte 02

Olá pessoal!

Dando continuidade a série de posts, iremos realizar algumas configurações em nossa VM Linux, não se esqueçam de consultar o post anterior (Monitorando servidores Microsoft SQL Server - It`s free! - Parte 01) para saber como configurá-la até aqui.

Iniciando os trabalhos, mostrarei como facilitar a administração dessa VM, pois caso estejam usando o Microsoft Hyper-V já devem ter percebido que o ato de copiar o texto na máquina real e colar na VM não é possível. Por isto farei uma pequena introdução a utilização do PuTTY.

quinta-feira, 1 de maio de 2014

Monitorando servidores Microsoft SQL Server - It`s free! - Parte 01

Olá pessoal!

Neste post iniciarei uma série sobre como monitorar seu Microsoft SQL Server. Uma necessidade atual de todo setor de TI é saber exatamente qual a carga atual de seus servidores e principalmente se algo não está como deveria. Existem muitas soluções ótimas no mercado, como por exemplo a plataforma System Center da Microsoft.

Porém, muitas vezes não conseguimos encaixar estas soluções em nosso budget ou infra estrutura. É muito comum vermos empresas que, apesar de terem servidores com Microsoft SQL Server, tem enormes restrições no âmbito de licenciamento ou hardware. Diante deste cenário, o mundo open source pode ser uma opção muito interessante para quem está disposto a deixar de lado o seu paternalismo por uma tecnologia específica.

Nesta série demonstrarei como implantar, de forma simples, o Zabbix, uma plataforma de monitoramento baseada em Linux, MySQL e PHP. Todas as tecnologias utilizadas serão open source, ou seja, sua empresa terá apenas o custo de hardware, que pode ser uma máquina virtual ou uma máquina que esteja parada por ter um poder de processamento limitado, mas que pode ser suficiente para o Zabbix.

O ambiente que montarei de exemplo aqui, contará com as seguintes versões das tecnologias:
  • Microsoft Hyper-V Server 2008 R2 - Porém com poucas adaptações pode implantar em VMware, Oracle VirtualBox ou em uma máquina real.
  • Linux CentOS - Distribuição Linux baseada em Red Hat, gratuita. No caso utilizarei a versão 6.3 que é a que consta como homologada para o Microsoft Hyper-V Server. Este link direto da versão aponta para o download através de torrent, que é amplamente utilizado no mundo Linux para download de ISOs, é necessário o download somente do cd 1.
Os demais itens serão baixados diretamente por dentro da máquina com o CentOS e explicarei melhor posteriormente. Iniciando os trabalhos, abaixo temos as configurações da VM, chamada C3PO, criada para hospedar esta solução. Reforçando que deve haver um equilíbrio entre a quantidade de servidores monitorados e o hardware do Zabbix server.

sexta-feira, 11 de abril de 2014

RESTORE detected an error on page (0:0) in database "database_name" as read from the backup set.

Olá!

Compartilharei uma experiência muito interessante que tive recentemente e que vem ao encontro do meu pensamento que DBAs tem de conhecer não somente o SGBD, como também o ambiente aonde eles se encontram.

Primeiramente, meu cenário, três servidores como descrito abaixo:
  • [servidor_antigo] - Windows Sever 2003 R2 SP2 + SQL Server 2005 SP4
  • [servidor_relatorios] - Windows Server 2012 R2 + SQL Server 2008R2 SP2 CU10
  • [servidor_novo] - Windows Server 2012 R2 + SQL Server 2008R2 SP2 CU10
Importante informar que tanto o [servidor_antigo] quanto o [servidor_novo] eram VMs dentro de uma estutura de Blade Server + VMware. Objetivando a substituição do [servidor_antigo] pelo [servidor_novo], após as devidas configurações, iniciei testes para garantir uma migração o mais trasnparente possível.

Por uma necessidade de negócio, diariamente o [servidor_antigo] realizava um backup full em um disco local que posteriormente era restaurado no [servidor_relatorios] para, como o próprio nome sugere, serem processados relatórios com querys de longa duração. Este restore era feito lendo o arquivo de backup no [servidor_antigo] através de um compartilhamento de rede.

Realizei um backup full do meu banco de teste no [servidor_novo] em um disco local e após o termino disparei o restore deste backup no [servidor_relatorios] também através de um compartilhamento de rede, exatamente como a rotina diária já existente fazia e, para minha surpresa:

RESTORE detected an error on page (0:0) in database "[nome do meu database]" as read from the backup set.
Error: 3183, Severity: 16, State: 1.

quinta-feira, 10 de abril de 2014

A vida, o universo e tudo o mais...


Vamos para uma nova empreitada, ter um blog e ainda ter postagens, rs.

Já tem um tempo que quero montar um, porém, como muitos que estão lendo este post, para não dizer todos, a corrida dos ratos nos faz ter de abrir mão de algumas coisas.

Minha idéia é postar sobre minha rotina de DBA SQL Server, vou tentar trazer situações de meu dia a dia, até mesmo para manter uma frequência nos posts.

Por este post é só e lembrem-se, apesar dos pesares, DON'T PANIC.