sábado, 26 de novembro de 2011

SQL Saturday #100: Por dentro dos wait types no SQL Server

Boa tarde pessoal, hoje no fim da manhã eu fiz minha apresentação para o SQL Saturday #100.

Tentei manter uma apresentação um pouco puxada (nível 400) e demonstrar para o pessoal alguns cenários com wait types mais comuns (mas não menos problemáticos). Consegui terminar mais ou menos no tempo certo e ainda contei com alguns minutinhos extras para tirar dúvidas.

Para não voltar à rotina e ficar devendo os scripts (ok, ok, ainda vou publicar os scripts do TechEd 2011, shame on me!), aqui estão...

PPT da apresentação:


Scripts da apresentação:


O bom do twitter que é difícil alguém ficar reclamando da sua palestra, e pelo que acompanhei, parece que o pessoal gostou. :-)
Comentários são sempre bem vindos!

Como eu disse no twitter, viajar, preparar a apresentação, noites mal dormidas, investmento do próprio bolso, tudo é cansativo e complicado. Mas depois que você encontra os amigos, faz uma apresentação interessante e vê a empolgação do pessoal, lembra que tudo isso vale mmmuuiittoo a pena.

Quem sabe até o próximo SQLSaturday no Brasil...

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

segunda-feira, 14 de novembro de 2011

Documentação: Bancos de dados, backups e planos de manutenção

Bom dia pessoal.

Um DBA (acho que todo profissional) deveria ter como um de seus focos a excelência na documentação do que ele está trabalhando, claro que isso não é verdade na maioria esmagadora dos casos, inclusive eu preciso melhorar bastante neste aspecto (hehehe). Fica registrada a tarefa e o heads up para nós.

Dito isso, na semana passada eu estava discutindo com um cliente a documentação do SQL Server e me agonia profundamente não termos living documents, mas sim aquele documento do Word ou Excel que em 10 dias já está todo desatualizado. Caímos dentro da rotina de backups e, quando feito através dos planos de manutenção, o diabo vira uma caixa preta.

Pergunto: em qual tabela de sistema temos uma listagem dos bancos de dados que estão cobertos pelo plano de manutenção?
Fiz algumas pesquisas rápidas e não encontrei nada referente a isso.
Consulta rápida no MSDB, encontramos o “dbo.sysssispackages” e lá está o binário do plano de manutenção. Brincando um pouco com o XML do plano de manutenção cheguei à consulta abaixo…

DISCLAIMER: não estudei o XSD ou referência detalhada ao XML dos pacotes do SSIS que contém os planos de manutenção, somente testei com o SQL Server 2008 R2 SP1, foi uma coisa rápida que eu produzi sem grandes cuidados e não garanto que vai funcionar em todos os casos, ok? É apenas um trecho que código que você pode evoluir ou eventualmente ser útil para alguém.

Código 01 – Consulta bancos do plano de execução
DECLARE @Dado XML
SELECT @Dado = CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML)
FROM dbo.sysssispackages AS S
WHERE S.name = 'Plano01'

;WITH XMLNAMESPACES('www.microsoft.com/sqlserver/dts/tasks/sqltask' AS SQLTask
    , 'www.microsoft.com/SqlServer/Dts' AS DTS)
SELECT
    RelOp.op.value(N'(@SQLTask:DatabaseName)', N'VARCHAR(1000)') AS DatabaseName
    , (CASE RelOp.op.value(N'(../@SQLTask:BackupAction)', N'INT')
        WHEN 0 THEN 'Data'
        WHEN 2 THEN 'Log'
        ELSE NULL
    END) AS BackupType
    , RelOp.op.value(N'(../@SQLTask:BackupIsIncremental)', N'VARCHAR(100)') AS BackupIsIncremental   
FROM @Dado.nodes(N'//DTS:ObjectData/SQLTask:SqlTaskData/SQLTask:SelectedDatabases') RelOp (Op)
GO

Esse código já evoluiu bastante no meu projetinho, pois é possível você cruzar os dados com jobs, jobsteps, schedules, etc. Aí você vai ter um detalhamento completo entre planos de execução, jobs e seus agendamentos, sendo possível documentar propriamente sua rotina de backup e manter os documentos facilmente atualizáveis. Sem precisar especificar no WHERE qual o plano você está interessado (#KidsModeON).

Por curiosidade, achei muito fraco o elo que o SQL Server faz entre esses elementos, então vou ter que estudar mais um pouco para fazer uma crítica consistente, senão posso acabar falando besteira por aqui.

Se vou publicar o código completo? Ainda não sei, no momento a versão “full” faz parte do Script Master DBA Nimbus Automator Tabajara hehehe

Se você testar com outra versões do SQL Server, planos complexos ou qualquer outro cenário, me conte se funcionou.

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

Treinamento de SSIS da Sr. Nimbus

Bom dia pessoal.
Anunciamos um novo treinamento a ser ministrado em Brasília, dessa vez sobre o famoso SQL Server Integration Services.

Particularmente eu demorei demais a colocar esse treinamento no calendário, pois já estou trabalhando constantemente com ele desde 2009 e se tornou um dos meus grandes interesses na plataforma da Microsoft, então nada mais justo que mostrar para o público como o SSIS é fantástico através de um treinamento profundo e detalhado.

Originalmente eu pensei em somente ministrar um treinamento avançado de SSIS, mas discutindo a ementa internamente e com pontenciais clientes, todos foram a favor de se manter os dois módulos (básico e avançado), já que algumas coisas que eu vou apresentar no básico... não são básicas! Só para variar, claro, faremos um treinamento com detalhes que podem ser bem avançados, então até o profissional que já faz alguns pacotes no dia-a-dia irá se beneficiar de participar de ambos os treinamentos.

A ementa dos treinamentos estão aqui: SQL05 e SQL06.

Datas: dezembro/2011 e Janeiro/2012.
Local: Brasília

Para participar dos treinamentos, veja a chamada no site da Nimbus.

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br