Articles tagged with: SQL Server

SQL Saturday #424 (SP) – Eu fui + relatos

IMG_20150929_132953005 (Large)

Olá,

Rolou nesse final de semana (26/09) na UNIP de Taubaté (São Paulo) mais uma edição do SQL Saturday (#424). Em resumo, trata-se de um sábado dedicado para disseminação de informação sobre o SQL Server (e relacionados) por voluntários que fazem parte da comunidade técnica (e sem medo de falar besteira, alguns dos melhores profissionais do Brasil estão entre eles) assim como uma oportunidade ímpar de networking com profissionais que estão ali trabalhando com a mesma coisa que você. E o melhor, é um evento gratuito (mesmo que os palestrantes paguem do próprio bolso todo o deslocamento pro evento).

Já é a quarta edição do evento que eu participo (sendo a segunda em São Paulo) e minha impressão pessoal é que tem melhorado cada vez mais como um todo (organização, distribuição de palestras, etc) e isso só tem sido possível graças à sempre afiada comunidade técnica e aos patrocinadores que aparentemente tem investido muito mais no evento do que a própria Microsoft.

A minha dica é: se você pode participar de uma oportunidade dessas, não pense duas vezes: é riquíssima de conhecimento e networking, então se o SAT não chegar na sua cidade, considere viajar para participar. Sugiro também que, caso a empresa não assuma as despesas da viagem por você, considere pagar do próprio bolso. Por mais que não pareça, é um experiência interessante para sua carreira e isso certamente terá retorno (não apenas financeiro, mas profissional, pessoal, etc).

 

Relatos

Enfim, vou falar um pouco sobre momentos do evento. Estou fazendo isso porque preciso voltar a escrever e essa é sim uma boa desculpa pra isso 🙂

Abertura:  Aconteceu no auditório. Começou um pouco em cima da hora e por esse motivo o responsável por abrir o evento (Diego Nogare) realizou a abertura mais depressa possível,  que durou menos de 10 minutos. Trata-se de explicações básicas sobre o evento, quem está patrocinando, como funciona a estrutura das trilhas, etc. Conversa breve e todo mundo levantou  e se direcionou para as salas.


Advanced SQL Server Execution Plans – Level 500

Fabiano Neves Amorim

Trilha: DBA (Desenvolvimento)

A palestra seria em uma sala que rapidamente transbordou de tanta gente (e olha que a sala era grande), e quando não cabia mais cadeiras na sala decidiram trocar nesse momento o local e voltamos para o auditório (onde rolou a abertura).

A palestra foi bem engraçada, com uma abertura bem zoeira do Fabiano que montou um slide só de memes e zoeiras de outros palestrantes, e depois disso  começou de verdade a apresentação: cheia de desafios de otimização e claro, soluções, e nessa apresentação especificamente, soluções que não são sempre as melhores devido à particularidades do Query Optimizer do SQL Server. Enfim, muito doido, recomendo pra quem gosta de conteúdo denso. Como o tempo estava um pouco corrido, Fabiano encerrou a apresentação mencionando que ainda tinha mais coisas pra mostrar, e aí indicou procurar no blog dele (e/ou  na página oficial do sat) .

Ah, e no final ele tirou algumas dúvidas e distribuiu algumas cópias do seu livro Complete Showplan Operators na bondade pura e acabei adquirindo uma cópia física do livro 🙂 Recomendo a leitura se o assunto plano de execução te interessa. O livro aborda de modo bem detalhado os operadores básicos e não é uma leitura pesada. Também é possível obter o .pdf gratuitamente baixando direto pelo site da RedGate.


Entendendo o Clusterlog

Marcelo Fernandes e Alex (@zedump)

Trilha: DBA Administração)

Palestra bem interessantes. Antes de explicarem o que é o Clusterlog, como é gerado e formas de analisá-lo, abordaram um pouco sobre o conceito de alta disponibilidade no geral, a regra dos 9’s e um  pouco sobre Failover Cluster.

O Alex também deu algumas dicas de como pesquisar com efetividade o clusterlog principalmente em casos de crise (onde o tempo é mais escasso), seja filtrando e interpretando o mais importante e fazendo associações com outros logs (como o log do event viewer, por exemplo).

A explicação foi bem clara e direta ao ponto. Algo que eu curti bastante e que não fazia a mínima ideia da existência disso: Backup para recuperação Bare Metal, que é um backup a nível de Sistema Operacional que possibilita a recuperação das configurações de várias estruturas do S.O, inclusive do Cluster, em casos de necessidade. O Marcelo mostrou uma demo disso no final da apresentação. É bacana, é um assunto que de fato tem pouco material na internet e no final arrancou alguns aplausos do povo porque a galera curtiu de verdade. O Marcelo aproveitou e mencionou que esse assunto está em maiores detalhes no livro recém lançado por ele e o Milton, o “ SQL Server 2014:  Alta disponibilidade na prática com AlwaysOn Failover Cluster Instances“, e de fato está (dei uma folheada e estava lá bem explicado).


SQL Server Security Hardening

Diego Miranda

Trilha: Geral 2

É um tema que curto muito e foi muito bem explicado pelo Diego Miranda. O começo da palestra foi uma explicação direta  abstraindo um pouco do que significa segurança no contexto de TI, depois aquele gráfico bem famoso de SGBDS x vulnerabilidades ao longo do tempo (tipo as do NIST) e tá ali a prova histórica de que o SQL Server não negocia o conceito de segurança: é um must e não um extra e todo o desenvolvimento do produto leva isso como parte do design.

 

Depois disso foi explicado vários pontos onde muitos ambientes possuem vulnerabilidades e as melhores práticas para corrigi-las. Citando alguns exemplos (que são extremamente comuns em qualquer ambiente e vi muita gente tossindo de leve em algumas ):

 

  • Conta do SQL Server como admin local;
  • XP_CMDSHELL
  • Porta padrão
  • Sysadmin

 

Na parte das demos, houve um tempo pra falar e mostrar sobre certificados, um pouco de TDE e também de um assunto que curto muito: CONTROL SERVER, que embora não seja um sysadmin pode “se elevar” o suficiente para se “tornar” um. Existem algumas formas de fazer isso e uma delas foi mostrada na apresentação. Não lembro se foi também a última demo, mas teve uma sobre trigger de login pra auditar acessos. Ele explorou algumas falhas que a maioria das implementações deste recurso fazem (como por exemplo, filtrar por Program Name sendo que esse parâmetro é totalmente editável pela string de conexão).

Enfim, foi uma palestra excelente e ficou claro o domínio do palestrante sobre o tema. Quem assistiu não deve ter se arrependido.


 

Vamos falar sobre TEMPDB

Ricardo Leka

Trilha: Geral 2 (DBA Dev)

Leka faz parte do grupo seleto de dois MCM’s e dessa vez o assunto foi particularidades sobre o TEMPDB, explicando a importância dessa base, porque ela é conhecida como playground dos desenvolvedores do SQL Server, arquitetura e limitações, qual a ligação da model com ela (sim) e no final comentou um pouco sobre a polêmica de quantidade de criação de arquivos de TEMPDB. Ficou evidente de que havia muito conteúdo nessa apresentação que ficou de fora por falta de tempo e o palestrante prometeu disponibilizar  material depois (e pessoalmente, estou curioso pra conferir esse material 🙂 ).


 

DataZen – Do Início ao Fim

Arthur Luz

Trilha: Geral 1

DataZen é uma ferramenta de BI relativamente nova no mercado e que foi comprada pela Microsoft. Atualmente não trabalho com BI e fiquei curioso pois não sabia nada da ferramenta, e o Arthur fez um ótimo trabalho explicando de forma facilitada do que se trata a ferramenta e explicou passo a passo sobre o processo de instalação.

O que me surpreendeu de verdade nessa palestra foi a tranquilidade e o domínio do palestrante sobre o tema, o que fez com que ele conseguisse passar tudo (e não era pouca coisa) o que ele realmente propôs na pauta e com certa tranquilidade (mesmo com menos tempo por que a sala estava ocupada). Achei um excelente ponto de partida para conhecer mais da ferramenta. A principal vantagem aqui é que o Arthur está constantemente blogando (e blogando bastante, olouco) sobre a ferramenta que agora é uma frente de trabalho dele, então se você se interessar pelo tema certamente vai querer conferir direto no blog dele, que você pode acessar aqui.


Hekaton v.2 e ColumnsTore Index v.3 – Nova Geração de Banco de Dados

Luan Moreno Medeiros Maciel

Trilha: DEV 1

O Luan é bastante conhecido na comunidade por ter praticamente adotado dois assuntos que são “eternas novidades” no SQL Server: o Hekaton (hoje conhecido por In-Memory OLTP) e Columnstore. Essa palestra foi bacana porque ele conseguiu falar as novidades sobre o Columnstore, depois sobre o Hekaton, depois sobre o Columnstore no Hekaton. Bem interessante ver que as features evoluíram muito desde a versão de inauguração: Hekaton não restringe tanto quanto antigamente como na primeira versão e agora o Columnstore possui algumas vantagens que na minha opinião deveriam ser essenciais desde a primeira versão (uma delas bastante importante é que ele é atualizável agora).

Se você se interessa sobre o assunto, basta procurar o blog do Luan e você verá um avalanche de post sobre o assunto.

 


 

Encerramento do evento + Material

 

E fomos para o auditório para as palavras finais, os agradecimentos, e como de costume, sorteio de vários brindes. É extremamente importante ressaltar que todo o conteúdo do SAT é disponibilizada na web, seja no blog dos palestrantes, seja na página oficial da edição do SAT correspondende. Então, minha recomendação é: se você tiver interesse e quiser um ponto de partida, clique aqui.


Conclusão + chamada pro próximo SQL Saturday (#469)

No final ficou aquele sentimento (pelo menos pra mim) de que precisamos estudar mais (sempre, ehuhea) e que valeu a pena estar ali, e já pensando sobre os próximos SATS. O próximo é aqui em Brasília que ocorrerá no dia 21 de Novembro. Se inscreva clicando aqui. Bora? Não deixe de fazer sua inscrição visitando esse link. Como já disse no início, vale muito a pena!

[]’s

 

Impressões sobre o exame 70-465 – Design database solutions for SQL Server 2012

Imagem totalmente random para representar o post

Olá,

Gostei bastante da prova e cá estou aqui pra compartilhar alguns pontos sobre a mesma..

Coisas legais

  • Casos de estudo: Questões baseadas em casos de estudos são bem interessantes pois como você recebe um cenário as questões são melhor contextualizadas, diminuindo questões de dupla interpretação e calando um pouco nosso amigo “depende”. Melhor ainda quando alguns cenários já foram, em outros momentos, presenciados, seja na vida real ou lidos via blogs e livros, e isso ajuda (me ajudou) bastante na hora de diagnosticar o problema da questão.
  • Features: A prova cobra de modo pesado conhecimento em praticamente todas as ferramentas do produto. Você não precisa dominar cada uma: é suficiente saber apenas o que cada uma faz e o que não faz e isso será cobrado em várias questões (bem mais de 15, no meu sorteio). Algumas questões vem praticamente de graça (por exemplo, quando a questão pede “a melhor opção para criação de políticas” e marcar PBM é quase que automático, e esse tipo de situação ocorreu em diversas questões). O que eu lembro que cai na prova: audit, agent alert, policy based management, resource governor, activity monitor, maintenance plain (…), Profiler, Xtended Events, DTC…
  • Melhor escolha: Essas questões são bem legais, porque geralmente apresentam uma cilada com duas ou mais respostas certas. Por exemplo, se você precisar listar as 10 maiores ocorrências de WAITS da sua instância, você usaria uma DMV ou um DBCC? Pro primeiro, você ordenaria e limitava o resultado. No segundo, você precisaria jogar em uma tabela, variável, etc pra depois fazer o mesmo que você faria no primeiro caso. Por isso, geralmente eu digo e repito: se você tiver 10 opções e dentre elas tiver alguma DMV, considere-a com carinho.
  • Alta Disponibilidade VS Disaster Recovery: Muitas questões muito bem orquestradas no sentido de separar uma coisa da outra e outras muito bem feitas. Saber os tipos de backup e qual o papel de cada um em um disaster recovery é muito importante. Sabendo o que cada um faz, e o TEMPO relativo que cada um demora, algumas questões são praticamente de graça. Backup de log é coisa de bonita de  Deus sempre, mas nem sempre é a melhor opção em uma operação de risco (previamente agendada) onde alguma cagada acontece e a recuperação precisa ser rápida. Talvez um Database Snapshot cairia melhor neste cenário de DR, por exemplo…
  • Indexação: Cai bastante coisa atrelado com os estudos de caso. Não são questões fáceis então recomendo dar uma lida antes sobre o assunto.

Coisas que eu não gostei

  • Mais questão de Mirroring, menos de Always-On. A funcionalidade de Mirroring será descontinuada pela MS nas futuras versões, então, esperava que os exames também fizessem isso, de alguma forma.
  • Algo já pontuado pelo Luti, é sobre as questões que possuem mais de uma resposta correta mas não possuem limites (por exemplo, cinco opções, e você pode marcar todas, ou uma). Se tiverem 4 corretas, e eu marcar 3, perco a questão inteira ou ganho proporcional ao valor da questão? Seria legal a Microsoft indicar isso nas questões ou nas instruções do exame, pra dissipar incerteza que no meu caso me fez gastar um tempo extra nessas questões.

Próximo passo (pessoal)

Exame 70-464! Destinei um tempo maior de revisão pra essa prova, já desenvolvimento não é minha praia e confesso que não tenho boa experiência com esse segmento (depois da 70-433) além de não ser atualmente minha atuação. Espero ter êxito nessa prova e compartilhar algumas dicas sobre ela também.

Referências

Recomendo fortemente a leitura dos posts abaixo (em ordem):

  • Luti – http://luticm.blogspot.com.br/2012/04/impressoes-da-prova-70-465.html
  • Alex Rosa – http://alexrosadba.wordpress.com/2012/11/01/70-465-designing-database-solutions-for-sql-server-2012-pass/

Considero as leituras acima bastante importantes caso você vá realizar o exame.

 

Bons estudos!

[]’s

Descubra a conta de Serviço do SQL Server

Registro

Olá,

Post dica rápida (e bem útil dessa vez, garanto) sobre como localizar a conta do SQL Server, direto no SQL Server.

Ás vezes existe a necessidade de se conferir qual é a conta de serviço, seja para simples conferência ou uso em scripts dinâmicos, por exemplo. Existem N formas de você fazer isso. Algumas delas:

1) Services: WinKey + R > Digite no executar services.msc > Procure o serviço do SQL Server > Botão direito > Aba Login, A conta está lá.

2) SQL Server Configuration Manager: SQL Services > Ver qual conta está no “Log as IN”. Basicamente, esse método é uma interface do primeiro.

3) Via bruxaria: (xp_cmdshell, xp_* e derivados). Exemplo:

Se você tiver o prazer de usar no mínimo o 2008R2, você pode usar as DMV’s abaixo.

4 – Modo DMV Lifestyle (SQL Server 2008R2 ou superior) – Motivo do título do post. 

Resumindo:Detalhes da Query

Se você tiver, dentre várias opções, alguma DMV, dê preferência, principalmente se precisar desta informação para realizar consultas.

Referências:

SQL Saturday #253 – Sessões publicadas, ajude o planejamento

Chamado No.2 do Sat

Bom dia pessoal,

Recentemente fiz um post sobre o SQL Saturday #253, e hoje recebi um e-mail sobre o evento.

Replicando o comunicado adicionando imagens de guia:

—————————————————————————————————–

Em poucos dias teremos o SQL Saturday #253 em Brasília! Dia 28/09/2013 estaremos juntos para um grande evento de SQL Server, grande mesmo, no momento temos mais de 560 pessoas entre confirmados e lista de espera.

Abaixo mais informações sobre o evento:

  • A programação completa do SQLSat #253 está no ar: http://sqlsaturday.com/253/schedule.aspx

Imagem

Imagem

  • Esta informação é importante, pois nos ajuda a entender a distribuição entre as sessões.
  • Se sua empresa tem interesse em patrocinar o evento, ainda há tempo, entre em contato com luciano.moreira@srnimbus.com.br

IMPORTANTE: Se por algum motivo você não vai poder participar do evento, faça o cancelamento da sua inscrição (http://sqlsaturday.com/253/changestatusrequest.aspx). Isso vai possibilitar que outros participem do evento.

Atenciosamente,
Luciano Moreira – SQLSat #253
———————————————————————————————————————-
É isso. Maiores novidades serão postadas aqui quando sair.
[]’s

Chamado: SQL Saturday #253 em Brasília!

SQL Saturday. Imagem provisória, quando puder edito, rs

O que é o SQL Saturday?

Está perfeitamente descrito aqui: http://sqlsaturday.com/253/eventhome.aspx e recomendo que você consulte para maiores informações.

Um sábado só com palestras sobre SQL Server. Conhecimento, networking, rever e fazer amizades, perto de casa, que coisa boa, que beleza, etc.

Resumindo:

  • É um evento sobre SQL Server;
  • Se você gosta ou tem interesse em aprender (cada vez) mais sobre plataforma deveria ir. Mesmo! ;
  • É gratuito e a localização é muito boa.
  • Se inscreva no site oficial do evento pra garantir sua vaga o quanto antes!

Marque no seu calendário:

Local:  Faculdade Projeção , Brasília-DF (Taguatinga Norte)

Endereço:  A.E.n.5 e 6 Setor C Norte

Link no Google Maps: https://maps.google.com.br/maps/ms?msid=209644132187367731803.0004e6319015717ce7a52&msa=0

Horário: 08h às 18h

Agenda do evento (Provisório)

Agenda Sat253

Eu sei que ninguém perguntou, mas minha impressão..

Estou muito animado pra ir, pois será meu primeiro Sat e melhor ainda, não é muito longe de onde moro. E é também uma oportunidade ímpar de ver colegas DBA palestrando pela primeira vez. A única parte negativa da história é que algumas palestras do meu interesse conflitaram no mesmo horário, mas, nada é perfeito =p

É isso, recado dado conforme pedido, missão cumprida e espero que tenha sido útil.

Depois edito o post com outras referências sobre o evento.

[]’s

Reposta do Desafio #1 T-SQL, Ranking Functions (ROW_NUMBER, RANK E DENSE_RANK)

Resposta do desafio

Bom dia pessoal 🙂

Semana passada eu disse que postaria a resposta do desafio #1 T-SQL no começo da semana. Andei ocupado, só deu pra terminar agora.

Pra relembrar, o desafio foi este: http://radialog.wordpress.com/2013/07/12/checkpoint-pessoal-desafio-1-t-sql/.

Precisamos obter os segundos maiores salários de cada departamento. O desafio praticamente disse, com todas as letras (pelo menos a solução mais óbvia) foi que devemos particionar por departamentos e  rankear pelo segundo maior salário.

A resolução mais óbvia se encontra no que chamados de Ranking Functions, informação que você encontra aqui nesse link do MSDN. De cara, a questão sugere que façamos uma classificação…. A minha solução (a mais intuitiva possível) foi utilizando CTE (Common Table Expression).

A questão anterior trabalha com uma variável de tabela. Para fins de prática e para entendimento das funcionalidades, execute o script abaixo que é o mesmo código do desafio, porém, materializado para tabelas físicas, no tempdb.

Ok, temos a tabela populada. Note que em um SELECT simples, a tabela está ordernada por departamento, algo já pensando na inserção dos dados no início deste exercício. Como poderíamos tentar classificar as linhas? Vamos tentar um ROW_NUMBER() ?

Que trará o seguinte resultado:

Explicando o que a linha ROW_NUMBER() fez: Particionou por departamento e ordernou por salário. Falando de modo mais fácil,  ele vai numerar as linhas de acordo com o departamento, e não se baseando na tabela inteira (por isso a partição por departamento). Essa foi a forma MAIS PRÓXIMA que se dá pra chegar no desafio, claro, utilizando um r0w_number() sem maiores firulas. Porque mais próxima e não a correta? Bem, observe as linhas em negrito e lembre-se que se existirem dois maiores salários, os dois devem ser mostrados. Vejam que existe empate do que  questão pede, que é o “segundo maior salário” entre diversos empregados. 

O row_number() não leva em consideração empate, então, não é a melhor função pra resolver o problema. Observe:

E o que o select traz pra gente?

Ele trouxe corretamente o que foi proposto sintaticamente falando: as segundas linhas (já que existe ordernação do maior salário ao menor) de cada deparmento. Mas os nossos amigos negritados não apareceram por completo devido ao empate, logo, row_number (em tradução simples, número da linha) não atende o desafio proposto.

NTILE() é uma cláusula que não serve também para resolver o desafio de forma simples. Não vou realizar o exemplo pro post não ficar muito grande.

Agora sim, temos RANK e DENSE_RANK que fazem exatamente o que o exerício pede, porém com uma sutil diferença… Vamos utilizar a mesma lógica de particionamento por departamento e ordenação por salário…

Olha o resultado:

É exatamente o que estamos precisando! Se formos realizar uma consulta filtrando as colunas “RANK” ou “RANK_DENSE” (usando uma CTE, foi a forma mais intuitiva que achei) ele trará o resultado correto da resposta. Porém, como disse antes, existe uma diferença sutil que faz a diferença entre “O certo” e o “O mais certo”. Não fez muito sentido o que eu disse? É justamente a palavra DENSE do rank. Se tivesse ali entre os dados DOIS “primeiros lugares” (sim amigos, um empate em um departamento dos primeiros maiores salários) o resultado certamente sairia diferente! Isso considerando dois, imagina três ou quatro…. Pra ilustrar melhor o que eu disse, vamos aos scripts:

Fazendo o teste…

Olha só o resultado!

Observe os empregados “S Martin” e “J Garcia”. Eles possuem os segundos maiores salários de seus departamentos, mas comparando os números de RANK() e DENSE_RANK() obtemos resultados diferentes entre si. A razão pra isso é muito simples: RANK() classificou em primeiro lugar dois itens. Como é natureza dessa função considerar os itens que estão agrupados em certa classificação, os teoricamente “segundo colocados” na verdade estão em terceiros, já que houve um empate entre os dois primeiros (então, como não foi dado nenhum outro critério de desempate, os dois ocupam o mesmo rank porém “tiram” a vaga dos próximos que virão).
DENSE_RANK() não faz isso. Ele considera uma classificação consecultiva, sem pular posições (por isso é “denso”).
Logo, a resposta mais correta seria o código abaixo utilizando dense_rank():

Resultado:

Pra ficar bonito o código sem esse rank_dense, você pode tirá-lo do SELECT pra ficar idêntico a resposta desejada. Deixei ele aqui só pra mostrar que era isso o que a questão queria: os segundos maiores salários de cada departamento, segundo que se houver empate entre os “segundo maior”, que todos os envolvidos sejam listados.

A resposta completa já estava no outro post neste link  aqui. Pra mim, a explicação daquele código já é suficiente para entender um pouco do problema, mas eu queria explorá-lo mais e pra isso, fiz o post.

Você conseguiu encontrar a solução? Utilizou outra forma? Fique a vontade para comentar. Agora vou dormir porque o dia é longo 🙂

Desafio #1 T-SQL

Divagação sobre momento + desafio TSQL

Bom dia!

Vi no blog do Vitor Fava (http://vfava.wordpress.com/) uma recomendação de sites com desafios de T-SQL.
Perfeita ocasião pra voltar a dar mais uma revisada na codagem!
Decidi então trazer alguns deles pra cá por dois motivos:

1) Incentivar você, leitor (se tiver afim é claro) de praticar (e reforçar o que você já sabe);
2) Transmitir uma forma de pensar diferente ou nova de lógica;

O crédito pelas questões é do site http://beyondrelational.com/, que é bem legal, e recomendo, pra quem curte desafios que visite sem medo de ser feliz (a não ser que você já seja um coder-monster, aí no caso você iria só pra brincar mesmo).

Toda semana, por períodos irregulares, irei trazer os desafios que eu acho interessante e postar aqui.
Quem quiser postar uma solução, pode fazê-lo no site ou aqui mesmo, pra gente compartilhar pontos de vista diferentes. Eu postarei a minha solução comentada sobre o exercício em outro  post pra não alongar esse aqui demais. Provavelmente esse final de semana! Já tá pronto aqui, só aguardando a oportunidade 🙂

Vamos ao enunciado:

Link da questão original: http://beyondrelational.com/modules/19/tsql-beginners/297/tsql-beginners-challenge-1-find-the-second-highest-salary-for-each-department.aspx?tab=info

Enunciado: O desafio é listar os funcionários com o segundo maior salário de cada departamento. Se dois funcionários tiverem o mesmo salário, você precisa listá-los também!

Regra: Sua solução deve funcionar no SQL Server 2005 ou superior, e a ordernação deve ser feita pelo salário.

Restrição: A solução deve ser apresentada em apenas uma consulta que comece com WITH ou SELECT. Ou seja, pode usar CTE? Pode tio(a). Pode usar tabela temporária, etc? Não tio(a), não pode.

Dados de amostra

Resultado esperado

Código da amostra:

Algumas dicas pra quem se sentir perdido (só leia isso se sentir bastante dificuldade):

1) Usar CTE (Common Table Expressions) é a forma mais fácil de fazer, na minha opinião;

2) Dê uma olhada nas Windows Functions, são o santo graal pra Ad-hoc Queries e vai resolver fácil essa questão .

3) Não veja a solução no site (existe a mesma disponível lá na aba solutions). Tente fazer pra aprender . Não é nada complexo e não exige muita leitura.

A solução será postada em outro post com explicações (farei isso final de semana ou na segunda). Se quiser ver a resposta (de novo, não recomendo) que ainda não tem as explicações mais atenciosas que farei na próxima postagem, clique aqui!

Até mais!

Impressões sobre o exame 70-450: PRO: Designing, Optimizing and Maintaining a Database Administrative Solution Using Microsoft SQL Server 2008

s6

Nome de exame pequeno, não é mesmo?

Ela só pode ser feita até final de Julho, então depois de adiar o máximo possível (nunca estive preparado) resolvi fazer! O maior aprendizado que fica é que umas cinco questões foram acertadas (quase certeza) graças a conversas que tive com um DBA sênior. E… deu certo! Estou feliz pois passar nesse exame era um objetivo pessoal, e graças a Deus, aos meus amigos DBA’s e ao material disponível na net (principalmente blogs) terminou-se a trilha das certificações MSSQL2008 pra mim 🙂

Maiores informações neste link sobre o exame.

Algumas impressões rápidas sobre a prova (ou “o que eu ainda lembro de terça, rs”):

É uma prova de cenários, onde às vezes a questão não é escolher a certa e sim a mais certa, e por careça que parível os enunciados estavam muito mais moderados que as do exame 70-432.

Alta Disponibilidade (High Availability): Replicação teve participação intensa, principalmente sobre seus tipos. Saber que Database Snapshot não é um método de HA  e qual tipo de técnica não funciona quando um banco possui FILESTREAM ajudou também.

Segurança: Algumas questões sobre TDE e criptografia. Saber qual o melhor método pra criptografar uma coluna e qual é o melhor pra base inteira e como recuperar um banco criptografado com TDE em outra instância ajudou.

Backups: Novamente, umas duas questões sobre cenário. As duas, banco crashou e algo tem que ser feito. Carinho especial para Database Snapshots, se aparecerem na questão. Ela pode ter algo especial. E importante: Um comando bem pequena faz com que o backup em questão não atrapalhe as rotinas de log no LSN. É aquele backup mesmo, que a gente tira quando não se espera. Quem saber qual é o comando ganha a questão.

Monitoramento: A maioria das questões te dava uma lista de itens e perguntava a seguir qual era a melhor forma de capturar essas informações. O SQL Server oferece várias alternativas, mas existe sempre a melhor. Saber o que o Profiler, DMV’s, DTA e logs podem fazer ajuda demais aqui.

No mais, uma questão sobre SSIS (que eu vi em um treinamento! HA), uma sobre Linked Server + configuração de login e outra sobre quais as possibilidades de clusterização pra determinado cenário, e etc.

Bem , agora vou dar uma tempo pra ler mais sobre o funcionamento físico do SQL Server, testar mais as features e aprender mais ainda sobre o ‘poder de fogo’ que ele tem e ainda não conheço. Quando estiver um pouco mais preparado, vou tentar a trilha de certificação do SQL Server 2012 , começando pela Querying. Mas antes disso, preciso ler e estudar muito. E claro, parar de falar um pouco sobre certificações aqui e postar algum conteúdo relevante pra dizer que isso aqui é um blog técnico, rs.

A maior lição que eu tirei dessas certificações, é que o maior benefício que elas podem trazer, é  de incentivar o estudo. O problema é que dependendo do tempo que a pessoa tem, a teoria adquirida aí tem que ser malhada no braço, fazendo lab, simulando uns erros, testando, etc. Não acho viável tirar certificações se não houver sinergia entre a prática vs teórica, já que, de qualquer jeito, o que aprendemos a memória “esquece” aos poucos, imagina o que aprendemos e não colocamos em prática?

Abraço!

Impressões sobre o exame 70-433: Database Development

Imagem que remete ao binário

Boa tarde!

Hoje vou falar sobre impressões e dicas que tive da 70-433, exame que credencia o profissional como Database Developer.
Para maiores informações, veja as referências ou a própria página do exame  clicando aqui!
Enfim, é um exame de 55 Questões (100% da prova), sendo necessário atingir pelo menos menos 70% de acerto na prova (Arredondando, 39 questões).
Comecemos com um relato. Eu inicialmente seguiria a trilha apenas de Administração da linha SQL Server 2008 (onde deveria tirar a 70-432 e 70-450), mas como os exames do SQL Server 2008 vão expirar no final de Julho, resolvi dar um tempo pra, além de ver conceitos relacionados à administração,  dar uma revisitada à temática de desenvolvimento.

Marquei a prova pra duas semanas depois do agendamento (o que  foi um erro) e não tive tempo de estudar o quando deveria (principalmente XML). Não passei. Chateação deixada de lado, peguei XML e o que não dominava muito bem e estudei/pratiquei bem mais, e remarquei sem custo (valeu second shot!) novamente, obtendo êxito dessa segunda vez graças à Deus o/

Sobre o exame

É uma prova que pode vencer pelo cansaço. Mais de 20% da prova é sobre confecção de consultas. 50% da prova (ou mais) são compostas de questões que te fazem rolar DEMAIS o scroll do mouse. Quem não tem paciência vai sofrer um bocado, se brincar até querendo pular as questões. Queries enormes e questões serão imensas. A boa notícia é que a maioria das questões, pra quem está realmente (disse, realmente) acostumado a fazer consultas, vai achar a questão certa só olhando sintaxe. Tem muita questão anulada por erros de sintaxes bem bola fora (alias em GROUP BY e JOINS loucos, daquele naipe cartesiano, sendo que consulta era bem específica quanto à filtros, por exemplo).

Bem, comentando agora algumas questões rapido e superficialmente (Pra falar a verdade, o que consigo lembrar agora):

XML: Na primeira vez caiu no final da prova. Na segunda vez, no meio. Consultar e gerar XML através do XML PATH é importantíssimo. Aprenda conceitos de XML, principalmente XSD, XPATH e XQUERY. Tem um compilado interessante do Gustavo Maia sobre o assunto.

Service Broker: Uma questão. A pegadinha foi sintática. Trata-se de um envio de mensagem por e-mail. Simule algo do tipo se der tempo;

Powershell: Duas questões. Sintaxe novamente era o segredo da questão;

Queries : Caiu muito sobre MERGE, umas quatro questões. CTE’s e subqueries em geral cairam bastante. Muita questão aqui é ganha por sintaxe. O que vai acontecer com frequência é ter duas questões praticamente idênticas e só um detalhe de diferença (por exemplo, tinham duas respostas iguais, script de criação de função, uma com schema dbo e outra sem. As duas estavam certas, porém a que tinha esquema era mais ‘completa’, logo, correta);

Data Tuning Advisor/ Profile : DTA, saber apenas pra que serve já basta para acertar as questões que a prova oferece. Profiler, saber o que pode extrair dele (principalmente os formatos de saída) podem salvar mais de duas questões da prova.

DMV’s: Saber quais DMV’s podem ajudar a detectar índices que podem ser criados ou taxa de fragmentação é um diferencial (dica).

Outras: O uso da função ROUND(), para que tabela vão os e-mails não enviados do Database Mail e saber como funciona o modo de isolamento SERIALIZABLE renderão alguns pontos.

Trigger: Cai muita questão! Estude muito essa parte. Teste. Erre. Aprenda, mas dominar o assunto garante uma boa quantia na nota.

Paciência: Primordial, principalmente pra quem tem preguiça de depurar consultas 🙂

Se você ainda vai fazer as provas da linha SQL Server 2008, boa prova e principalmente, o mais importante, bons estudos!

Dicas de Estudo

Além do Training Kit (é claro) do exame, poderia compilar vários links interessantes e de profissionais que trabalham com SQL Server.

Dessa lista, uma que me ajudou bastante foi o simulado que o Gustavo Maia montou. Questões realmente fantásticas. Recomendo fortemente.

E é isso. Agora vamos estudar pra 70-450 e aperfeiçoar o conteúdo obtido estudando o 70-432 (que é muita coisa por sinal).

Pouco tempo mas muita vontade.  E muita coisa pra aprender e revisar.

[]’

Impressões sobre o exame 70-432: MCTS – SQL Server 2008 – Implementation and Maintenance

Funcionamento interno do Banco de Dados

Olá!

Bem, durante todo o tempo desde que postei pela primeira vez estava me preparando para o exame 70-432, que credencia o profissional ao título de especialista. Foi um longo tempo lendo o Training Kit 70-432 e fazendo os exercícios, além de implementar na prática as funcionalidades lá apresentadas.

Para maiores informações do exame basta clicar aqui !

Agora o que mais cai na prova:

Estratégia de backup (Situações e melhores formas de realizar backup e restore);

Particionamento (Caiu umas 5 questões, esse tema necessitou mesmo de atenção porque as questões eram até desafiadoras. Pena que não dei tanta atenção pra esse tema quando estudei, mas deveria). Filegroups, files…;

Modelos de Recuperação (São questões tranquilas quando você lê “o banco precisa ser restaurado em algum momento do tempo” ou “precisa utilizar otimizar operações minimamente registradas, etc);

DMV’s (Duas questões sobre elas…. Sobre saber onde usá-las e quando, como por exemplo as que detectam gargalos de falta de índice);

Opções disponíveis em algumas ferramentas da Suíte SQL Server (Profiler, Data Tuning Advisor, SQL Server Agent, Database Mail). Muitas questões sobre isso e a maioria das vezes era sobre uma função ou outra de cada uma delas;

Índices não podiam faltar. Cinco questões, algumas envolvendo particionamento. Filegroups novamente…;

FULLTEXT (Criação e reconstrução desses caras fizeram uma boa presença na prova, mais de três questões);

Usuários órfãos (Muita atenção para transferências de banco entre instâncias…)

Server Roles e Database Roles, cujo segredo é dar SEMPRE o mínimo de permissão possível para o usuário. Sabendo o que cada ROLE faz resolve muito sobre a questão;

Alta Disponibilidade (Log Shipping e sua velha pegadinha de precisar do Agent, Mirroring como uma boa opção para Alta disponibilidade (dependendo do caso…), Failover e Failback também cairam, Replicação, caiu alguma coisa sobre conceitos de publisher, subscriber, etc….

TDE (Transparent Data Encrypt, marcando também forte presença, umas três questões).

Uma observação importantíssima: cairam algumas questões de SQL Server 2008 R2.Então se possível, não estude apenas pelo Training kit, e procure saber o que o R2 traz de novo….Uma dica de estudo é a trilha de SQL Server 2008 R2 do MVA, que está no link abaixo (se não expirar):

https://www.microsoftvirtualacademy.com/training-courses/introducao-ao-sql-server-2008-r2

Enfim, estou contente pois valeu a pena ter estudado e passado nesse exame, pois me ensinou muita coisa e tive a grande felicidade de ter um grande DBA me tirando dúvidas sempre que possível (Grande Kiko, também conhecido por Tiozão, se você tiver lendo isso, valeu!).

E é isso… Estudando agora para outras provas… Dizem que a 450 segue o mesmo assunto da 432 porém em uma ótica mais avançada. Estou estudando pra essa agora, acho que vai dar tempo de fazê-las antes dela virar legada (tomara). Depois de fazer a prova, verifiquei também onde precisava melhorar, e foi o feedback que temia. Pelo visto, terei que reproduzir em LAB muitos casos de particionamento de tabelas, testes de índice e ler muito sobre técnicas de alta disponibilidade (acredito que é um assunto ESSENCIAL pra atuação e para um DBA e ouvi falar que cai muito na 70-450).

E é isso. Pra quem ainda vai fazer esse exame que se extingue em Jul/2013 desejo bons estudos/aprendizado!