Fórum Técnico Microsoft SQL Server 2014 - 25/04/2014


Olá pessoal tudo certo? Espero que sim!

 Bom, tenho certeza que muitos que estão lendo este post também estiveram presentes na Microsoft no dia 25 deste mês, no fórum técnico sobre o SQL Server 2014, o qual reuniu os PFE’s e MVP’s que palestraram sobre diversas novidades do produto. Na minha opinião foi um dos melhores eventos que já fui quando se trata de divulgar funcionalidades de um novo produto MS, o nível das palestras estava muito bom e os palestrantes extremamente “afiados”. Vou listar abaixo as palestras das quais participei e uma breve descrição do que foi abordado em cada uma delas (Não estão necessariamente na ordem).

Big Data - Diego Nogare (MVP)

 O Nogare reforçou o conceito de Big Data, que à cada dia surgem milhares de novas informações que podem ser processadas em N ferramentas ajudando as empresas nas tomadas de decisão importantes aos negócios.

SQL Server 2014 - Novidades da engine relacional - Luciano Moreira (MVP)

 Antes do tempo do Luti acabar (rs), ninguém desgrudou os olhos dos scripts que ele estava rodando mostrando algumas das evoluções bem interessantes na engine relacional do produto.

Performance de Missão Crítica no SQL Server 2014 - Thiago Caserta (PFE) e Frederico Guimarães (PFE)

 O Caserta e Fred falaram das features que melhoraram com a nova versão do produto como o Resource Governor e Always On e também falaram sobre a nova tecnologia InMemory, como está se bem implementada pode prover ganhos enormes de performance, o gerente técnico de SQL Server do Itaú Marcelo Andretto tomou a palavra para falar de um case de sucesso real deles ao implementarem a nova tecnologia.

SQL Server over SMB - como tirar vantagens das melhorias no WS 2012/R2 - Fábio Hara e Fabrício Catae

 Um dos mais populares evangelistas Fábio Hara e o “ninja” de SQL Server Fabrício Catae, falaram sobre como a tecnologia SMB 3.0 está bem mais robusta que sua versão anterior e como agora é possível deixar os arquivos do SQL Server em share’s sem maiores preocupações de performance, disponibilidade etc.

A evolução do SQL Server: 7.0 ao 2014 - Fabrício Catae

 Nesta palestra o “ninja” expos as grandes mudanças do produto, separando eles em SQL 7.0/2000, 2005/2008R2 e 2012/2014, explicou como o SQL Server evoluiu ao longo do tempo, sobre as features que foram melhoradas e sobre features que surgiram que tornaram o produto ainda mais completo.

Columnstore Index: Como otimizar seu DataWarehouse - Felipe Ferreira

 O “sqlboy” palestrou sobre o Columnstore Index, mostrou como este funcionava quando surgiu no SQL Server 2012 e como foi melhorado agora no SQL Server 2014, explicou alguma de suas limitações e principais vantagens se implementado.

*****************************************************************
 Em breve o material das palestras estará circulando portanto fiquem atentos! Um abraço e até a próxima!

SQLdiag - Parte 5 (Final) - Processando os resultados gerados pelo SQLdiag.


Fala galera tudo bem? Espero que sim!

Este será o último post da série sobre o SQLdiag! Irei demonstrar como vocês podem usar os dados coletados pelo utilitário para analisarem com maior facilidade como está a saúde do seu ambiente e eventualmente investigarem algum tipo de problema que está ocorrendo, ocorreu e até mesmo se precaver para que não ocorra. 

Nos posts anteriores expliquei como utilizar o utilitário, como customiza-lo e como configurar ele para rodar periodicamente no Windows, uma vez que já temos tudo isso feito em nosso ambiente precisamos de fato analisar tudo o que foi coletado. Abaixo irei listar as ferramentas principais que costumo utilizar para analisar os dados.

Performance Monitor

Acredito que a maioria conhece ou pelo menos ouviu falar desta ferramenta que existe desde os primórdios do Windows. Ela será útil para analisar os arquivos BLG’s gerados pelo SQLdiag. Vou dar um rápido exemplo abaixo:
Cliquem em Start > Run...

Digitem “perfmon” e cliquem em OK.

Quando a ferramenta abrir, no canto esquerdo escolham Performance Monitor:

Por padrão ele irá mostrar o contator Processor Time do Windows, apenas ignore-o, cliquem com o direito na parte branca onde o gráfico está sendo mostrado e depois cliquem em Properties:
 
Agora na pasta superior cliquem na aba Source, selecionem Log Files e depois cliquem em Add...:

Agora naveguem até a pasta output onde está o arquivo BLG gerado pelo SQLdiag e adicionem ele, no meu caso o arquivo estava na pasta C:\Output, cliquem em Apply e depois em Ok:

Pronto! Agora o arquivo foi carregado no Perfmon, cliquem com o direito na parte branca e depois cliquem em Add Counters...:

Selecionem os contadores, no meu caso vou escolher apenas Processor > %User Time e %Privileged Time, adicione-os clicando em Add>> depois em OK:

Vejam só o resultado final:

Dica: Quando vocês possuem mais de um arquivo BLG é possível consolidar eles em um único arquivo através do prompt de comando utilizando o RELOG (http://technet.microsoft.com/en-us/library/bb490958.aspx), exemplo:
Possuo os dois arquivos abaixo:

Agora quero juntar estes arquivos, abrindo um prompt de comando em modo elevado, navego até o diretório e disparo o seguinte comando:
relog arquivo1 arquivo2 –f csv –o c:\output\relogdiag

O parâmetro –f serve para especificar o formato de saída, eu costumo utilizar CSV pois comparado com o BLG ele gera arquivos menores, quanto ao –o serve para que você indique o diretório de saída e o nome do arquivo final, não é necessário que você coloque o formato do mesmo, ele fara isso automaticamente. Agora basta executar o comando:

Notem que os dois arquivos são mostrados e já é informado à faixa de horário que ambos compreendem, o arquivo gerado pode ser depois carregado no Performance Monitor.

SQL Nexus Tool
Particularmente, esta ferramenta é uma das minha preferidas quando se trata de plotar gráficos com uma cara mais amigável para serem apresentados para outras pessoas que podem não ser necessariamente técnicas. Nesta demonstração vou utilizar a versão 3 do Nexus mesmo sabendo que à 4 tenha sido lançada estes dias, pois ainda não tive tempo de testar melhor esta nova versão. A versão 3 pode ser baixada de graça no seguinte link:

Não irei customizar nenhum XML ou Scripts pois desta forma poderemos ter problemas na hora de importar os dados com o Nexus, irei utilizar os arquivos gerados com o programa Diag Manager.

Como pode ser visto no próprio site de download da ferramenta, ele tem alguns pré-requisitos para funcionar corretamente, são elas: .NET Framework 3.5 ou >,  RML utilities, Report Viewer 2010 e um SQL Server para armazenar o resultado das análises, a versão Express já é suficiente e é gratuita. Certifiquem-se de instalarem todos previamente. 

Após ter feito o Download, abra o SQL Nexus Tool:

Logo que a ferramenta abrir, ela irá solicitar que vocês apontem um SQL Server onde os dados a serem processados serão gravados, nunca apontem um SQL Server de produção, sempre busquem utilizar máquinas de homologação:
 
Uma vez que a ferramenta se conectar com a instância do SQL Server que vocês informaram, reparem na parte superior da ferramenta o seguinte:


 
A ferramenta cria uma base padrão chamada sqlnexus, cada análise deve ser feita usando um banco de dados diferente portanto, criem uma base de dados clicando na seta para baixo e depois em New Database, tentem escolher sempre um nome estratégico para esta nova base de dados, por exemplo um nome que possua a instancia, base de dados, data e hora da coleta:

Agora que criamos nossa base, copiem os dados gerados pelo SQLdiag do ambiente que vocês querem analisar para um diretório de sua preferência na máquina onde o Nexus está instalado, desta forma tudo será processado localmente sem utilizar a rede evitando assim possíveis gargalos:

Voltando ao Nexus, cliquem em File depois cliquem em Import:

Apontem o caminho onde estão os dados, em Options, Navegue em Importers>BLG Blaster>Deixem marcado o Enabled, isto fará com que ele processe os arquivos BLG gerados, voltando no mesmo menu cliquem em Save My Options para que na próxima importação isto já esteja configurado:

Agora, cliquem em Import.

Vocês primeiro verão uma tela preta referente ao processamento do BLG:

E depois verão os resultados do script Perf_Stats sendo processado:

Obs.: Sua coleta pode conter arquivos trace também que também seriam processados pelo Nexus nesta etapa, a menos que você desabilite pelo menu de importação.

Depois que a importação dos dados terminar, notem que ao lado esquerdo da ferramenta temos algumas opções de relatórios para selecionar:

Vou clicar por exemplo, em Bottleneck Analysis, vejam só o resultado:


O Nexus não para por ai, vamos agora clicar em SQL Server 2008 Perf Stats, caso de erro pode ser que vocês não possuam todos dados necessários para montar o report, neste caso, tentem clicar no do SQL Server 2005. Vejam as opções que aparecem:

Escolha a primeira para analisarmos se ocorreram bloqueios na instância do SQL Server no período que coletamos os dados com o SQLdiag e quais foram os Top Waits:

No topo o Nexus mostra os Top Waits...


Na parte inferior as cadeias de bloqueios...


Querem detalhar mais ainda uma cadeia de bloqueios é possível? Sim! Basta clicarem em cima do link em azul de qualquer uma das cadeias listadas:

Text Pad

O Text Pad é outro editor de texto de arquivos grandes assim como o Notepad++, ele pode ser utilizado se sentirem a necessidade de investigarem o resultado gerado pelo Perf Stats Script “na unha”, atualmente ele se encontra na versão 7 e pode ser baixado no site a seguir: http://www.textpad.com/download/index.html
Vou dar um exemplo rápido e algumas dicas. Após ter instalado o Text Pad, abra a ferramenta depois vá até File>Open:

Na parte de baixo deixem marcado em “All Files” e depois selecionem o arquivo de saída do script Perf Stats gerado pela execução do SQLdiag conforme figura abaixo e cliquem em Open:

Depois que a ferramenta abrir o arquivo, vocês podem navegar por ele com atalhos extremamente úteis como por exemplo o Ctrl+F, o qual navega para o próximo registro de acordo com o que você selecionar, por exemplo vou selecionar o campo Start Time:

Pressionando Ctrl+F eu pulo para o próximo campo Start Time:

Também é possível voltar ao campo anterior, pressionando Ctrl+Shift+F.

A ferramenta possibilita a abertura de arquivos com tamanho superior a 2 GB, e não existe sofrimento para navegar neles mesmo tendo todo este tamanho. 

Bom pessoal, é isso, encerro aqui mais uma série. Espero que vocês tenham gostado e qualquer dúvida me coloco a disposição! Um abraço e até o próximo post!

SQLdiag - Parte 4 - Registrando o SQLdiag como um serviço no Windows!

 Fala galera tudo certo? Espero que sim!

 Acabou minha vida fácil, então, de volta ao SQL Server! Continuando a série sobre o SQLdiag, desta vez vou mostrar como configurar ele para rodar periodicamente no Windows.
 Imaginando que vocês já estão com seu XML e scripts customizados em mãos (se não estiverem, você podem usar os exemplos dos posts anteriores), a primeira coisa que iremos fazer é registrar o SQLdiag como um serviço no Windows.

Registrando o SQLdiag como um serviço no Windows...

1. Abram um prompt de comando elevado (Run as administrator):


2. Agora, naveguem até o diretório padrão do SQLdiag:


 Notem que está pasta contém o executável do SQLdiag + Arquivo XML de configuração + Script customizado, no meu caso usei os mesmos dos posts anteriores:


3. Agora, rodem a linha de comando abaixo:

sqldiag /R /A DiagMagu /I “c:\program files\microsoft sql server\120\tools\binn\sqldiag_custom.xml” /O “c:\output” /P %cd%

Explicando cada parâmetro:

/R – Este parâmetro será responsável por registrar o SQLdiag como um serviço no Windows.
/A – Este parâmetro server para que você nomeie o serviço do SQLdiag, se vocês não o utilizarem ele assumirá o nome default.
/I – Diz qual arquivo de configuração (XML) o SQLdiag irá usar.
/O – Especifica o diretório de saída dos resultados da coleta. No meu caso "c:\output".
/P – Especifica o diretório onde demais arquivos de configuração que o SQLdiag irá utilizar estão localizados, como script’s, xml’s etc. Como nossos arquivos estão na pasta corrente, estou utilizando o %cd%


Aguarde a confirmação de que o serviço foi criado...


4. Agora que nosso serviço foi instalado com sucesso, antes de iniciá-lo devemos tomar o cuidado para configurar ele para rodar com uma conta que tenha permissões dentro do SQL Server, do contrário, scripts customizados podem não funcionar, configure uma conta na aba "Log On" nas propriedades do serviço.


5. Agora vamos efetuar um breve teste, nos serviços do Windows deem um “start” no serviço que acabamos de criar:


6. Confiram se ele ficou em “Started”:


7. Naveguem até o diretório que configuraram como "output" e vejam se os arquivos da coleta estão sendo gerados conforme figura abaixo:


 Se os arquivos estão lá, ótimo! O serviço do SQLdiag foi configurado corretamente, agora temos que resolver outra questão, se deixarmos o SQLdiag rodar sem uma interrupção, na hora de analisar os arquivos pode não ser nada prático, primeiro pela questão das datas e horários e segundo pelo tamanho que os arquivos podem atingir de acordo com o ambiente que está sendo monitorado. Poderíamos então quebrar isto por exemplo a cada 12 horas? Claro! Como fazer? Usando o SQL Server Agent para controlar o serviço!

Controlando o START/STOP do SQLdiag utilizando o SQL Server Agent...

1. Vamos supor que queremos que nossa coleta rode em ciclos de 12 em 12 horas.

2. Abram o SQL Server Management Studio, no SQL Server Agent, cliquem com o direito em Jobs e depois cliquem em “New Job...”


3. Nomeiem este JOB como Start_SQLdiag:


4. Em “Steps”, na parte inferior clique em “New...”, chame está Step de “Start” e mudem o tipo dela para “Operating System (CmdExec)”:


 5. Agora, em “Command”, vamos deixar conforme abaixo:

SQLdiag START /A DiagMagu

Obs.: Mudem o que está em amarelo de acordo com o nome que escolheram para o serviço do SQLdiag.

6. Agora em “Schedules”, na parte inferior clique em “New...”, chamem a nova schedule de Start1_Sched, deixem o tipo dela em “Recurring”, certifiquem-se de que o “Enabled” está marcado, conforme abaixo:


7. Ainda na nova schedule, em “Frequency”, deixem o campo “Occurs” em “Daily”, e em “Daily frequency”, deixem o campo “Occurs once at” como 06:00:00 AM, conforme abaixo:


8. Feito esta schedule, criem uma outra nos mesmos moldes mudando seu nome para Start2_Sched e o horário deixem como 6:00:00 PM, conforme abaixo:


9. Salvem este nosso primeiro job.

10. Criem um segundo job, chamem ele de Stop_SQLdiag.

11. Criem uma nova step chamada Stop, deixem o tipo em “Operating System (CmdExec)” e em comando deixem conforme abaixo:

SQLdiag STOP /A DiagMagu

Obs.: Mudem o que está em amarelo de acordo com o nome que escolheram para o serviço do SQLdiag.

12. Igual ao job de start, criem duas schedules, chamem uma de Stop1_Sched e a outra de Stop2_Sched, configurem ambas da mesma forma que as schedules do job de Start, contudo nos horários para a 1 deixem em 05:55:00 AM e para a 2 deixem em 05:55:00 PM.

13. Hora de testar! Nos serviços do Windows, parem o SQLdiag.


14. Agora, via SQL Server Agent, deem um start no JOB que criamos chamado Start_SQLdiag:


 Se ele rodar com sucesso vocês verão a tela abaixo:


 Confirmem nos serviços do Windows se o SQLdiag realmente foi iniciado:


IMPORTANTE:  Caso o job falhe e no histórico vocês verem uma mensagem igual a abaixo:

Isto indica que a conta de serviço que executa o SQL Server Agent não tem permissões para controlar serviços no Windows, a partir daí existem duas saídas, ou atribuímos a conta a permissão para tal ou criamos dentro do SQL Server uma “credential” que referencie uma conta do Windows com permissões suficientes, depois um proxy deve ser criado referenciando está “credencial” e sendo colocado como “owner” das steps dentro dos job’s. Vejam os links abaixo:


15. Vamos testar o job de stop, rodem o job que criamos chamado Stop_SQLDiag:

 Se ele rodar com sucesso vocês verão a tela abaixo:


 Confirmem nos serviços do Windows se o SQLdiag realmente foi parado:

 Nossos jobs estão perfeitamente funcionais, no exemplo acima criamos jobs que irão controlar o SQLdiag para que ele gere coletas a cada 12 horas, primeiro ciclo das 06h00 às 17h55 e segundo ciclo das 18h00 às 05h55.

 Agora já temos nosso ambiente sendo monitorado com o SQLdiag! Será que alguns de vocês estão se perguntando o que fazer depois com os dados gerados? Pois é, este é o assunto do próximo post, não percam! Um abraço!