terça-feira, 24 de abril de 2012

Instalação do BDD falha na checagem dos requisitos


Faz alguns meses eu fui instalar o BDD na máquina nova e me deparei com um problema: a checagem dos pré-requisitos não deixava a instalação continuar, alegando que estava faltando um dos pré-requisitos. Para a apresentação (e na pressa) eu usei uma máquina antiga que tinha o BDD e deixei esse problema de lado.

Nessa semana vou usar o BDD para testar desempenho de alguns pacotes em um cliente e novamente estava lá o erro de instalação do BDD de 32 bits, o que é necessário para você montar o seu pacote, já que o Visual Studio 2008 é um processo de 32 bits.

A mensagem do erro é “Product: Microsoft SQL Server SSIS Balanced Data Distributor (x86) -- The installation is not successful. Check the following prerequisites: 1. Either Integration Services or BIDS has to be installed. 2. The version of these components has to be either SQL Server 2008 SP2 (or future SPs) or SQL Server 2008 R2 (or future SPs).”

Validei novamente, todos os pré-requisitos instalados e o diabo da mensagem aparecendo. Como não têm nenhum log de instalação e neste momento não consigo nem saber em qual validação de componente ele está parando, além da documentação não me dar uma lista extensiva das checagens, só me restou a ir para o meu mecanismo de busca favorito...

Olha aqui que belezura, viva os fóruns e blogs! 
Thread no MSDN: http://social.msdn.microsoft.com/Forums/en/sqlintegrationservices/thread/bbbc2366-5e76-4a06-af48-23c188a2506b
Link que está na thread: http://joshgallagher.info/2012/01/25/installing-balanced-data-distributor-on-sql-server-2008-r2-sp1/

Mesmo com o diabo da mensagem falando “SQL Server 2008 R2 (or future SPs)” é necessário “retroceder” a versão do SQL Server 2008 R2 para o RTM editando chaves de registro, caso você tenha instalado o SP1 (e possivelmente algum hotfix ou cummulative update). Outra opção seria desinstalar o SP1, instalar o BDD e instalar o SP1... Fiquei com a primeira abordagem. Mas que beleza!

Como eu já falei do BDD antes, resolvi postar sobre o assunto e fica mais uma referência para a solução deste vacilo do setup. Tomara que possa te ajudar ou pelo menos que o seu mecanismo de busca melhore o ranking da resposta postada no fórum! :-)


PS: E CLARO, não se esqueça de voltar as chaves de registro ao valor original. Ugh!


[]s

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

sexta-feira, 20 de abril de 2012

Analise o cenário e me diga qual o problema...


Ontem um amigo MVP me mandou um e-mail de uma possível consultoria em SQL Server, falando de um cliente com alguns problemas de desempenho no SQL Server e como poderíamos ajuda-lo. Não fui ao cliente e nem vi o ambiente, não temos nem proposta de trabalho, só conseguimos bater um papo hoje com o cliente, o que corroborou ainda mais minhas teorias, então resolvi escrever este post sobre o assunto.

Junto com o e-mail tinha algumas informações do ambiente e montei uma análise (rápida e suja) sobre um dos problemas que o cliente está tendo, então compartilho com vocês o cenário e minha análise. Sugestão: leia o problema e tente entender qual é a zica e qual seria sua sugestão...

Cenário


Acho que não dava para ser mais breve, vamos lá...

Servidor com 64GB de RAM e 16 processadores
SQL Server 2005 SP4 x86 Standard Edition
AWE Habilitado
Max Server Memory = 60.000
Max Worker Threads = 0

Além disso, o cliente mostrou uma tela com uma série de requisições bloqueadas por um wait type bem divertido: RESOURCE_SEMAPHORE_QUERY_COMPILE.

Em um call que fizemos hoje, ele mencionou que já trabalharam em um servidor com 32GB de RAM e fizeram um acréscimo de hardware com mais processadores e 64GB, porém o comportamento não mudou. Então eu pergunto:

O que justifica o cliente estar vendo o wait type RESOURCE_SEMAPHORE_QUERY_COMPILE? Como você atacaria o problema?



TEMPO
PARA
VOCÊ
PENSAR
UM
POUCO,
OK
???
???
!!!!
!!!!

Explicação

RESOURCE_SEMAPHORE_QUERY_COMPILE - Este é o semáforo de compilação do SQL Server, é a forma que ele tem para impedir que a otimização de consultas acabe com a memória do servidor, então ele cria alguns gateways (small, medium e large) que controlam o número de compilações simultâneas dentro de cada grupo. Os thresholds e número de compilações são definidos de acordo com os recursos disponíveis para o SQL Server... Então está ótimo, pois o SQL Server têm definido 60.000MB para o Buffer Pool!


Opa opa opa, calma lá! Aqui temos um probleminha, pois estamos trabalhando com o AWE (pois o SQL Server é 32 bits) e sabemos que somente o data cache pode se beneficiar dessa extensão. E o resto dos memory clerks, como ficam? Bom, eles têm que disputar o que sobra dentro dos 2GB de endereçamento virtual de user mode, isto é, tirando o MemToLeave temos aproximadamente 1.6 para todos os outros clerks, provavelmente até menos se descontarmos outras coisinhas.


Como também o plan cache está nessa pressão, caso ele não esteja sendo bem utilizado, provavelmente está forçando ainda mais o número de compilações, aumentando a probabilidade de vermos mais do wait type em questão. Realmente um daqueles problemas de cobertor curto.


Aproveitando, acho que aí fica claro porque não houve grande ganho com o upgrade de hardware, pois a contenção está em uma área de memória que não se beneficia de mais memória utilizada através de AWE.


Sugestões...


A sugestão padrão é migrar para arquitetura de 64 bits, pois aí o endereçamento virtual é capaz de suportar todos os memory clerks e dividir melhor a proporção utilizada por cada um deles.


Outra opção, mais limitada, é tentarmos aliviar pontualmente a dor que eles estão sentindo, tentando aumentar a eficiência do plan cache, parametrização de consultas, etc. De forma que consiga aliviar um pouco a pressão entre os clerks e minimizar o número de compilações necessárias.


Muitos poderiam sugerir habilitar o /3GB, mas aí com 60GB de BPool o problema seria outro e o cliente provavelmente experimentaria o problema de PTE starvation. 



No fundo não é um problema muito trivial, mas acho que o diagnóstico está bacana para um cliente onde nem tocamos no ambiente. Tomara que ele consiga esperar por um buraco na nossa agenda, estou querendo “sujar as mãos” e fazer um tuning pesado com eles. Afinal, nos disseram que duas empresas de consultoria já passaram por lá...

Assunto show! E que os alunos do Internals já sabem, afinal falamos sobre isso nos módulos 01 e 02! Curiosamente estamos com outro e-mail discutindo outro ambiente x86, dois no mesmo dia, para quem pensou que não veria muito mais casos de 32 bits.

Abraços,



Luciano Caixeta Moreira - {Luti}

luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

[SQLServerDF] Encontro XIV - Aplicando o SQL Server Resource Governor

Então é hora de pegar o embalo e vencer a inércia. Além do encontro de Maio sobre xEvents, aproveito para anunciar o encontro XIV do SQLServerDF.
As informações sobre o encontro são:

Local: Auditório da Microsoft - Edifício Corporate Financial Center, sala 302 - Brasília


!! DATA ATUALIZADA !!
Eu estarei fora de Brasília na data original do encontro (19 de Junho), então segue nova data...
Data e horário:
 26/06/2012, 17:00h ~ 19:30h


Tema:
Aplicando o SQL Server Resource Governor


Descrição:
Esta sessão têm por objetivo explicar o funcionamento do Resource Governor, entendendo seus componentes: grupos, pools e função de classificação. Também vamos discutir um pouco do funcionamento interno e o mais importante, como utilizar o resource governor. Em quais cenários ele ajuda? Como trabalhar a função de classificação? Como fazer ajustes dinamicamente com o RG? E para finalizar, vamos falar das melhorias que temos no SQL Server 2012.


Palestrante:
Luciano Caixeta Moreira


Mini-bio:

Luciano Caixeta Moreira é fundador da empresa Sr. Nimbus, onde atua como consultor e instrutor SQL Server/.NET. Trabalhou na Microsoft Brasil entre Janeiro de 2006 e Março de 2009, onde atuou como Premier Field Engineer de SQL Server e especialista em desenvolvimento. Formado em ciência da computação pela Universidade de Brasília, ele atua com desenvolvimento, consultoria e treinamento de tecnologias Microsoft desde 2000, sempre focado no desenvolvimento de soluções e banco de dados. Luciano obtém as certificações MCP, MCAD .NET, MCSD .NET, MCDBA, MCTS (SQL Server 2005/2008, .NET 3.5, ADO.NET 3.5 e ADO.NET 4.0), MCITP (SQL Server 2005/2008) e MCT, nomeado MVP de SQL Server em Julho/2010, também e escreve em seu blog: http://luticm.blogspot.com

Quer participar? Então mande para o grupo SQLServerDF um e-mail confirmando sua presença, pois a capacidade do auditório é limitada, portanto atendemos por ordem de recebimento de e-mails!



[]s

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

quinta-feira, 19 de abril de 2012

[SQLServerDF] Encontro XIII - xEvents no SQL Server 2008 e SQL Server 2012

Vamos para mais encontros do grupo SQLServerDF, dessa vez eu vou falar um pouco sobre um assunto muito interessante... xEvents!
As informações sobre o encontro são:

Local:
Auditório da Microsoft - Edifício Corporate Financial Center, sala 302 - Brasília

Data e horário:
15/05/2012, 17:00h ~ 19:30h

Tema:
xEvents no SQL Server 2008 e SQL Server 2012

Descrição:
Essa sessão têm por objetivo explicar o que são Extended Events, recurso que foi disponibilizado no SQL Server 2008, e como é o funcionamento e arquitetura deste componente importante (mas não tão utilizado) do SQL Server. Nessa sessão vamos partir desde de uma introdução ao mundo do xEvents, conceitos básicos, como utilizamos e exemplos de uso, até explorarmos um pouco as novidades do SQL Server 2012 para xEvents.

Palestrante
: Luciano Caixeta Moreira

Mini-bio:

Luciano Caixeta Moreira é fundador da empresa Sr. Nimbus, onde atua como consultor e instrutor SQL Server/.NET. Trabalhou na Microsoft Brasil entre Janeiro de 2006 e Março de 2009, onde atuou como Premier Field Engineer de SQL Server e especialista em desenvolvimento. Formado em ciência da computação pela Universidade de Brasília, ele atua com desenvolvimento, consultoria e treinamento de tecnologias Microsoft desde 2000, sempre focado no desenvolvimento de soluções e banco de dados. Luciano obtém as certificações MCP, MCAD .NET, MCSD .NET, MCDBA, MCTS (SQL Server 2005/2008, .NET 3.5, ADO.NET 3.5 e ADO.NET 4.0), MCITP (SQL Server 2005/2008) e MCT, nomeado MVP de SQL Server em Julho/2010, também e escreve em seu blog: http://luticm.blogspot.com

Quer participar? Então mande para o grupo SQLServerDF um e-mail confirmando sua presença, pois a capacidade do auditório é limitada, portanto atendemos por ordem de recebimento de e-mails!

Para aqueles que perguntam: vai ser transmitido ao vivo? Não. Gravado: talvez. Estou pensando na ideia de colocar o Camtasia gravando a sessão, o problema fica sempre por conta do áudio... O SQLServerDF aceita doações de microfones bluetooth ou qualquer equipamento bacana que possa nos ajudar a conduzir melhor os encontros do grupo. :-)

[]s

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

segunda-feira, 9 de abril de 2012

Impressões da prova 70-465

Sexta-feira, feriadão nacional e onde eu estava 08:50 da manhã? Na Hepta/Novintec para fazer a prova 70-465 Designing Database Solutions for Microsoft SQL Server 2012 (na verdade 71-465, já que era uma prova beta).
Eu marquei a prova sem consultar os feriados e por coincidência a data ainda estava aberta no calendário da Prometric, então lá estava eu, arrastando a recepcionista em pleno feriado para fazer mais uma prova beta de SQL Server 2012. Tirando um atraso do sistema de 50 minutos, acabei a prova toda em aproximadamente 1:15h.

Com essa encerrei meu ciclo de provas beta, nesta semana a agenda está bem atribulada e ainda tenho que estudar mais sobre algumas coisas do SQL Server 2012 para as outras provas. Dentre as três provas eu gostei mais da 70-461, achei ruim a 70-464 e a prova 70-465 está no meio termo, acho que é um prova que consegue cobrir bem o conteúdo que está descrito pela Microsoft (
http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-465#tab2), mas ainda falta um pouco mais de complexidade para ser uma prova de design, que julgo eu, deveria ser a mais complexa das três.

Vamos ao pontos da prova...


1. 
A prova tinha duração de 3 horas contando tempo para questionários, e efetivamente 2:15h para as questões. Ainda me pergunto porque a 70-464 é a mais longa, de novo acho que essa prova têm que ser a mais complexa e, portanto, mais longa.
2. A prova era composta de 5 (ou 6?) estudos de caso e mais 28 questões avulsas, sendo que dos N estudos cada um tinha em média 3 questões e dois casos se repetiram, cada um com questões diferentes. Gosto muito dos estudos de caso, mas não da forma como foi colocado.
        a. Achei essa quebra muito ruim, alguns casos são grandes e é impensável você ler tudo antes de partir para as questões, então têm que partir das questões e encontrar o que precisa na descrição do cenário. Se a Microsoft agrupasse as perguntas, poderia dar mais complexidade às questões sem o aluno “perder tempo” com muito enunciado, portanto acredito que o ideal seria 2 cenários longos com 8/9 perguntas em cada um.
3. Nesta prova você não é cobrado por sintaxe ou como utilizar o SSMS para executar determinada tarefa, sendo uma prova de designing a Microsoft que validar se você sabe como escolher a melhor funcionalidade para compor uma solução, então vai exigir conhecimento bem diversificado, indo desde mirroring e AlwaysOn, passando pelo Agent, backup/restore, criptografia, PBM, indexação, programming, etc. 
4. Como já mencionei, algumas questões poderiam ser mais complexas e outras pecam por não possuírem um maior detalhamento para você  escolher a MELHOR resposta, mas teve melhor qualidade do que a 70-464.

Lado técnico... É quase mais fácil falar o que não caiu, no máximo 2 questões sobre um determinado assunto, mas vou tentar relembrar alguns pontos que merecem atenção.


1. Edições do SQL Server e do Windows Server: algumas vezes o enunciado cobra aquele que atende o requisito e quer minimizar o custo, então saber se existe no Standard/Enterprise, se executa no Windows Core, é necessário. Particularmente sou muito ruim em saber funcionalidade x versão, provavelmente devo ter errado alguma.

2. Estratégica de Backup/Recovery, alertas e jobs também são cobrados. Se você é desenvolvedor e nunca viu isso, vai te atrapalhar com certeza.
3. Ferramentas para fazer um troubleshooting são cobradas (inclusive uma mesma questão apareceu com respostas diferentes), saber se deve olhar wait stats ou outra DMV (e quais).
4. Indexação, manutenção, influência de tipos de dados (ex.: LOBs).
5. Programação T-SQL usando tabelas @ e #, normalização (caiu uma questão bem bacana).
6. Concorrência – principalmente escolha de níveis de isolamento, como resolver deadlocks, etc.
7. Segurança – ownership chaining, TDE.
8. Filetable vs. Filestream vs. VARBINARY(MAX)
9. Alguns assuntos que não caíram (provavelmente você pode esbarrar com algum desses): tópico “Design SQL Server instances”, Entity-Attribute-Value (EAV) modeling, triggers DDL, e um ou outro mais.

Então para essa prova se você só trabalhar com T-SQL ou é um DBA que só olha para a parte administrativa, terá problemas com essa prova, não que seja extremamente difícil, mas errinhos bobos quando acumulados pode representar sua reprovação. Minha sugestão, explore bem a lista de conteúdo da prova, lendo um pouco sobre cada coisa e entendo o quadro geral, e provavelmente você se dará bem nessa prova. Realmente ainda espero que a prova definitiva seja mais difícil...


Fecho aqui minha série sobre as provas betas, espero que esses comentários possam te ajudar, seja na prova beta ou na definitiva. Agora é esperar algumas semanas e torcer para o resultado ser positivo, prometo que atualizo os posts com o resultado da prova, aí poderemos saber se os conselhos ganham mais solidez. E como eu critiquei bastante algumas provas, seria melhor não reprovar...


Bom estudo!

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

quarta-feira, 4 de abril de 2012

Impressões da prova 70-464

Hoje de manhã fiz a prova 71-464: Developing Microsoft SQL Server 2012 Databases (que por ser beta fica com o 71 ao invés do 70) e NÃO gostei da prova nem um pouco.

Antes de fazer a prova eu sempre dou uma olhada no site da prova (http://www.microsoft.com/learning/en/us/exam.aspx?id=70-464) e reviso as habilidades que são cobradas (skills measured). Dei uma olhada e nada fora do esperado para uma prova de desenvolvimento do SQL Server 2012, revisei algumas novidades do SQL Server 2012 e tudo certo, pronto para a prova.

Seguem as críticas e pontos positivos da prova...


1. 
A prova beta tinha 2 estudos de caso (6 e 11 questões) e 28 questões avulsas. Eu particularmente sou um grane fã dos estudos de caso, acho que trás uma maior complexidade para a prova e o candidato têm que levar em consideração diversos aspectos que podem influenciar a resposta, sem ter a garantia de que os fatores que influenciam na resposta estão ali em cima, no cabeçalho. Ponto para a Microsoft.
2. A prova tinha duração total de 4 horas com os todos questionários e 3 horas e 15 min (ou algo parecido) para as questões técnicas. Eu acabei tudo em 1:30h, então de prova foi 1:15h. Ou a prova definitiva vai ser diferente ou alguém errou feio no tempo, não vi necessidade de todo esse tempo.
3. Nessa prova questões do tipo “Escolham todas respostas que se aplicam” sem falar o número de itens que devem ser marcados e outras do tipo “Escolha aquela que MELHOR responde a pergunta”.
        a. Com relação ao primeiro tipo, não tenho muito problema em não saber o número exato de itens, é mais difícil, só não sei se a correção considera tudo ou nada para a pontuação da prova.
        b. Já o segundo trás um problema, você têm que considerar muitos aspectos para escolher o melhor, mas o enunciado da questão muitas vezes é pobre! Eu levo em conta mais uns 10 detalhes que não foram definidos na questão e recorrentemente fico tentando adivinhar o que o autor da questão estava pensando. Uma merda.
4. Questões de arrastar elementos para compor a solução estão presentes e acho legal, pois o candidato têm que saber estruturar a resposta. Só acho que deveriam ser oferecidas mais opções para dificultar um pouco, da forma que está na maioria das vezes é simples.
5. Muitas questões avulsas parecem que foram escritas com pressa e as respostas são muitas vezes ridículas. Acho interessante combinar questões que exijam do candidato um formalismo de sintaxe e outras que cobrem conceitos, como quando usar funcionalidade X ou Y.
        a. O que não rola é o camarada colocar uma questão conceitual em que a resposta é utilizar um XSD e entre as respostas ter “sp_configure”, “trigger de DDL”, “índice XML”. O que ele está efetivamente testando? Se o cara sabe já ouviu falar alguma vez o que significa XSD (já que na questão sintaxe não é cobrado)?
6. Eu tive que comentar uma questão com o seguinte texto “This is the worst question I’ve ever seen in a Microsoft Exam. Remove it.”.
        a. A questão tinha um enunciado super confuso, uma procedure de referência que você tinha que corrigir e entre as opções tinham: alterar a linha 1; linha 4; linha 6; linha 14. SEM FALAR O QUE DEVE SER UTILIZADO. Era uma questão que tinha potencial para avaliar se o camarada entendeu o estudo de caso e validar construções T-SQL, mas a forma como foi escrita a questão, PQP!
7. Achei problemático a consistência entre questões dentro de um estudo de caso, por exemplo.: uma questão pedia para definir o tipo de dados de uma coluna, para armazenar algo do dado “00434000242” (string explícita na descrição caso!), onde é uma combinação de 2 números. Eu escolheria CHAR(11), para facilitar o tratamento posicional. Logo em seguida vem uma questão para adicionar uma foreign key para essa mesma coluna que as únicas opções era trabalhar com BIGINT. Voltei e mudei a minha resposta, já que não seria consistente no mesmo caso uma coluna com dois tipos.
8. Uma questão ou outra eu achei fora do contexto do desenvolvedor TSQL. Me respondam, um dev precisa saber que existe o sp_add_job ou sp_add_operator para trabalhar migrar Jobs do agente entre servidores.

Revisão dos itens técnicos:

1. 
Primeira coisa que me impressionou, não vi nenhuma questão sobre novidades do SQL Server 2012: contained databases, FileTable, column store index, etc. Pode ser alguma coisa com o sorteio das questões, mas estranho.
2. Objetos de programação: views, procedures e UDF. Chove na prova, nada de outro mundo, só para validar se o cara sabe escrever procs, alterar, trabalhar com schemabinding, tipos de UDF, etc.
3. XML: caiu muito na prova, mas em geral questões simples (nível 100/200). Quando poderia complicar a sintaxe, vinham as perguntas genéricas. Saber trabalhar com colunas XML, XPath, XSD, DOCUMENT/CONTENT, etc.
4. Índices e desempenho: caiu bem, entender os tipos, cover index, filtered, etc. A maioria das vezes acompanhado de consultas ruins ou descrição de cenários, em geral tranquilo, tirando uma onde eu acho que se a MS queria validar o mesmo que eu imaginei, é fora da realidade.
5. Tipos de dados e criação de objetos/esquemas: algumas questões, na sua maioria simples, uma ou outra com sintaxe que utilizamos pouco (ex.: esquemas) que pode pegar alguns, como me pegou. :-)
6. Segurança: caíram mais questões relacionadas a criptografia (e seus tipos), TDE e assinaturas. Senti falta de mais questões relacionadas com ownership chaining, atribuição de permissões e execute as/revert.
7. Questões isoladas (1 ou 2): locking,  CLR, objetos temporários, transações, DMVs (ridícula a questão), Full-Text Search,

Em geral eu achei muito mal distribuídas as questões, não cobrindo assuntos importantes e repetindo questões do mesmo assunto. Enunciados pobres, questões mal formadas e muita questões tão simples (espero eu) que deixa a gente na dúvida, além de pouco validar.

Sinceramente eu acho que fui bem na prova, mas até agora estou pensando se não havia algum peguinha nas questões ou o que o autor queria avaliar no candidato, então um resultado negativo não está fora de cogitação. Claro que continuo torcendo para passar, mas espero que a Microsoft faça uma bela revisão no conteúdo dessa prova, pois não acredito que atinge o objetivo de avaliar o desenvolvedor SQL Server. Diferente da 70-461 (http://luticm.blogspot.com.br/2012/03/impressoes-da-prova-70-461.html) que fez isso muito bem.

Boa prova!


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