Arquivo

Archive for the ‘Virtual PASS BR’ Category

Não confie em ninguém

1 de setembro de 2011 11 comentários

Como diria meu amigo Luti, o assunto deste post está mais pra conversa de boteco, mas ultimamente creio que valha um post.

Duas coisas aconteceram e me fizeram criar coragem para escrever sobre isso. Primeiro o Paul Randal (Blog | Twitter) começou com essa história aqui e segundo foi o Grant Frinchey (Blog | Twitter). O Grant esta fazendo a revisão de meu último artigo pro Simple-Talk onde escrevi sobre “colunas ascendentes” e ele me fez mudar um texto onde eu dizia algo mais ou menos assim:

“Por isso que recomendo que você atualize as estatísticas de sua tabela 1 vez por dia com a opção fullscan”.

O Grant levantou a bola dizendo que ele não gosta de fazer estas recomendações genéricas, porque isso depende muito de cenário para cenário. Tive que concordar com ele, e acabei mudando um pouco minha frase, realmente isso depende, e nossa intenção é evitar que pessoas digam: – “Eu só atualizo as estatísticas 1 vez por dia, porque li em um artigo no Simple-Talk o Fabiano dizendo pra eu fazer isso.”.

Vivendo e aprendendo, a partir de agora não faço mais isso.

Mas voltando ao assunto deste post.

Algo que tem me incomodado bastante é a quantidade de informações incorretas que tem se espalhado por ai. Hoje é muito fácil criar um blog e escrever sobre um determinado assunto. Temos milhares de blogs por ai falando sobre SQL Server, com assuntos para todos os gostos, básico, intermediário, avançado e alguns posts impossível de entender (http://blogs.msdn.com/b/psssql/).

A questão é, será que com isso tudo de informação, podemos realmente fazer uma busca no google sobre um determinado assunto e confiar no que será retornado? A resposta é, leia tudo, não confie em nada.

Um post é quase sempre relacionado a um caso específico, que nem sempre se aplica ao seu ambiente. Um exemplo sobre isso é uma discussão interessante que estou tendo com o pessoal da MS sobre a recomendação de criar 1 arquivo de tempdb para cada CPUs (cores) existentes na máquina. Isso é sempre necessário? Não, #Fato.

Eu sempre gosto de dizer o seguinte, se fosse pra você confiar em uma recomendação geral, confie na seguinte: “Nunca confie em uma recomendação geral”.

Escrever sobre SQL é de fato uma ótima maneira de aprender mais sobre a ferramenta. Mas cuidado com o que você escreve, estude e teste muito antes de escrever sobre algo. A ideia é a seguinte, preciso escrever sobre Extend Events para poder aprender mais sobre isso… Ou seja, vou estudar e compartilhar o que aprendi no meu blog.

Ultimamente tenho lido muita coisa equivocada, muito mesmo, e isso me preocupa.

Não estou falando que sou o cara, para com isso, por favor me entenda, eu com certeza já escrevi muita baboseira no meu blog, btw preciso fazer uma revisão para ver se acho algo nos posts antigos, coisas que eu achava que funcionavam de um jeito mas que com o tempo descobri que não é funcionam bem assim.

Atenção, sim eu estou dizendo para você não confiar cegamente nos meus posts, eu não sou Guru em SQL. Posso escrever algo errado, claro que sim. Mas uma coisa te garanto, antes de escrever eu estudo MUITO e pesquiso demais sobre o assunto para evitar falar asneira.

Agora que virei MVP tenho acesso a um grupo com todos os MVPs em SQL Server do mundo, eu MORRO de medo dos caras que trocam e-mails por lá, os caras sabem MUITO, é inacreditável. Um assunto simples sobre ODBC, vira livro, o conhecimento dos caras é MUITO grande. Quer um exemplo disso, leia o posto que o @bobbeauch escreveu sobre OleDB ontem.

Como vocês devem ter percebido, tento sempre escrever sobre coisas que sou especialista, T-SQL, tuning etc… Vocês não vão me ver escrevendo sobre DataMining porque não sou especialista nisso.

Moral da história, se você tem um blog, cuidado para não escrever asneira. E ao ler algo, mesmo que seja de uma fonte “confiável” sempre tenha em mente que uma recomendação não se aplica para todos os ambientes, sempre teste tudo o que você leu. E sim, critique, questione, isso faz com que todos aprendam mais, os leitores e o autor.

Criticar é diferente de xingar, esculachar. Criticas são bem vindas, sempre, principalmente as negativas. Por favor me critiquem. Críticas positivas são boas para nosso ego, mas não servem pra nada.

Como diria Salomão (alguns acham que não foi ele) no livro dos Eclesiastes – “Elogios vazios são como gravetos atirados em uma fogueira”.

A frase acima é muito bonita e vem a calhar com este post. Mas tem um problema. De acordo com o google, existem 6.280 páginas citando esta frase e dizendo que ela faz parte de um comentário do Max Gehringer onde ele menciona que essa frase faz parte do livro do Eclesiastes.

Eu já li o livro de Eclesiastes e nunca vi isso por lá. Talvez seja uma tradução especifica que não conheço, mas pelo que sei, não creio que esta frase faça parte da Bíblia Sagrada.

Isso é exatamente o que quero mostrar e dizer com este post. Renomado e famoso Max Gueringer pode estar errado, e por conta disso, 6.280 pessoas também erram republicando o texto incorreto.

UPDATE: O Max tava certo :-), ainda bem. Ainda não sei qual tradução ele usou porque ele não me respondeu, mas tenho uma Biblia chamada A Biblia Vida e em Eclesiastes 6:7 temos um texto parecido com isso que ele disse acima :-).

Questione, teste!

Obs.: Mandei um e-mail para o Max perguntando sobre qual tradução da Bíblia ele utilizou para achar esse “versículo” no livro de Eclesiastes. Depois atualizarei este post com a resposta dele.

Eu gostaria muito de continuar a escrever e falar sobre outra coisa que me incomoda muito, plágio, mas isso fica para falarmos no boteco mesmo J.

O que você acha em relação a isso? Eu adoraria ler seu comentário.

Obs.: Como confiar no texto de alguém que esta dizendo para você não confiar em ninguém? Smile with tongue out

Abs

Categorias:Pessoal, Virtual PASS BR

PSP–Parameter Sniffing Problem + DMV CachePlans

31 de agosto de 2011 3 comentários

Estou em um cliente e desconfiei de um problema relacionado ao parameter snifing em uma proc, pra variar um pouco…

Dai lembrei de uma sessão do Jason Strate sobre XML e Execution Plans sensacional…

http://www.jasonstrate.com/presentations/past-presentations/

A sessão é a “Using XML to Query Execution Plans”, e tem um arquivo na pasta de scritps chamado “005 – Parameterization.sql”. Eu usei o mesmo conceito utilizado por lá e fiz uma modificação para especificar uma proc em uma variável e verificar quais foram os parâmetros utilizados para criação do plano em cache para a proc.

Sensacional, segue um exemplo:

— test
DBCC FREEPROCCACHE
GO
use master
GO
sp_help sysobjects
GO

image

Para testar rodei um exec na proc sp_help passando como parâmetro a “tabela” sysobjects.

Agora consigo consultar os parâmetros utilizados para gerar o plano de execução para a proc sp_help usando o código abaixo:

— Query para consultar parâmetros utilizados para criação de um plano
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO

DECLARE @ProcName VarChar(500)
SET @ProcName = ‘sp_help’;

http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/07/27/digging-into-the-sql-plan-cache-finding-missing-indexes.aspx
WITH XMLNAMESPACES  (DEFAULT ‘http://schemas.microsoft.com/sqlserver/2004/07/showplan’)
,PlanHandles AS (
    SELECT DISTINCT plan_handle
    FROM sys.dm_exec_query_stats
    )
,PlanParameters
AS (
    SELECT ph.plan_handle, qp.query_plan, qp.dbid, qp.objectid
    FROM PlanHandles ph
        OUTER APPLY sys.dm_exec_query_plan(ph.plan_handle) qp
    WHERE qp.query_plan.exist(‘//ParameterList’)=1
    and OBJECT_NAME(qp.objectid, qp.dbid) = @ProcName
)
SELECT
    DB_NAME(pp.dbid) AS DatabaseName
    ,OBJECT_NAME(pp.objectid, pp.dbid) AS ObjectName
    ,n2.value(‘(@Column)[1]’,’sysname’) AS ParameterName
    ,n2.value(‘(@ParameterCompiledValue)[1]’,’varchar(max)’) AS ParameterValue
    ,n1.query(‘.’) AS N1_XML
    ,n2.query(‘.’) AS N2_XML
From PlanParameters pp
    CROSS APPLY query_plan.nodes(‘//ParameterList’) AS q1(n1)
    CROSS APPLY n1.nodes(‘ColumnReference’) as q2(n2)

image

It’s that nice or what?

Abs

Campanha ganhe um livro A Arte da Guerra (孫子兵法)

25 de agosto de 2011 1 comentário

Galera, vamos lá.

Para ajudar na divulgação do meu novo blog estou criando uma campanha onde irei sortear 2 livros Arte da Guerra do Sun Tzu.

http://pt.wikipedia.org/wiki/A_Arte_da_Guerra

A campanha é simples:

  • Irei eleger 2 criadores com a resposta ou frase mais interessante para a pergunta abaixo, e irei enviar cópia do livro do Sun Tzu a Arte da Guerra.
  • Pergunta: Como o Sun Tzu pode te ajudar a ser um DBA/Desenvolvedor SQL Server melhor ?

Para participar basta enviar um e-mail da frase para “fabiano_amorim arroba bol ponto com ponto br” com o assunto “Campanha – Sun Tzu DBA”.

image

As frases e nomes dos ganhadores serão divulgados aqui no meu blog, e eu contatarei os ganhadores por e-mail para envio do livro.

Não ha limite de envio de frases, mande quantas quiser. Qualquer dúvida é só postar um comentário que logo responderei.

Se eu estivesse participando acho que estas seriam minhas frases Smile:

“A estratégia sem tática é o caminho mais lento para a vitória. Tática sem estratégia é o ruído antes da derrota.” Depois que li essa frase do Sun Tzu nunca mais usei cursor.

Tenho certeza de que as estratégias do Sun Tzu irão elevar o nível de como faço guerra com os DBAs que ousam passar pelo meu caminho. (versão desenvolvedor)

Me desculpa mas depois de ler “A Verdade Sobre Chuck Norris: 400 Fatos Sobre o Humano Mais Fantástico do Mundo” não creio que o Sun Tzu possa me ascrecentar algo.

Video, WebCast Denali + Windows Functions

24 de agosto de 2011 Deixe um comentário

Galera, segue o vídeo da minha sessão sobre Windows Functions e Denali…

Abraços

Denali + Windows Functions

My Precious conhecimento!

24 de agosto de 2011 9 comentários

Meu primeiro post no novo Blog… vamos ver o que vai sair.

clip_image002[7]

My Precious conhecimento!

Nos últimos anos/meses tenho dedicado uma boa parte de meu tempo mais valioso (quando estou em casa) escrevendo artigos, blogs posts e me preparando para eventos ou webcasts. Por que isso?

Bom vamos começar do começo.

  • Dia 11 de Dezembro de 2006 fiz minha primeira prova de certificação em SQL Server, o exame 70-431. Eu já estava apaixonado pelo SQL Server há algum tempo, a partir deste colocamos a aliança.
  • Em 30 de Novembro de 2007 eu escrevi meu primeiro Post de Blog. Viciei, e desde lá já se foram 189 posts.
  • Dia 07 de Abril de 2008 recebi o seguinte e-mail do Luciano Caixeta Moreira, que na época estava trabalhando na Microsoft:

Cara, está rolando uma coisa bacana de SQL Server nesse momento e acho que podemos tentar te colocar”.

O e-mail era pra me convidar para fazer uns vídeos para a Microsoft, os vídeos seriam publicados no programa MSDN Experience. No final acabou que não deu certo de eu ir para São Paulo para gravar os Vídeos, e fiquei só na expectativa.

  • Dia 14 de Maio de 2008 para minha alegria recebi um e-mail do Daniel Ferreira da Microsoft, me convidando para fazer uma WebCast para o MSDN, falando sobre Upgrade para SQL Server 2008.

Depois disso definitivamente eu já sabia que quanto mais eu compartilhava meu precioso conhecimento, mais precioso ele se tornava.

Após minha primeira WebCast, varias outras oportunidades surgiram, mais WebCasts, eventos em Faculdades, eventos Microsoft, artigos para o Simple-Talk, artigos para Revistas e por ai vai… Oportunidade de compartilhar meu conhecimento é o que não faltava…

O que me faz continuar nessa vida loca (agora são 01:17 da madruga)?… Eu adoro isso tudo. Fico honrado em saber que o que escrevo pode ajudar alguém, seja pra resolver um problema, ou para aprimorar seus conhecimentos. Quando estou ministrando um treinamento de SQL Server e um aluno realmente interessado faz uma pergunta que tem tudo a ver com o que estou falando, me sinto realizado.

Eu adoro escrever, amo ensinar as pessoas porque eu aprendo com elas, uma vez ouvi uma pessoa dizer, “- Eu entendi que você só aprende mesmo uma coisa, quando tem que ensinar para alguém.” Isso é a mais pura verdade.

Aonde esse meu prazer em escrever e ensinar me levou?… Para maior empresa de consultoria de SQL Server do mundo.

Contrato assinado com a SolidQ e perspectivas surreais para os próximos meses.

Obrigado a todos que acreditaram em mim, e aos que me ajudaram a chegar até aqui. Comunidade SQL, conte comigo. SolidQ I’m yours, count on me and all my hard work to build a big company here in Brazil .

Obrigado Deus, porque sei que não sou digno de nada disso. Sua graça me constrange.