Articles tagged with: Querying

Vigilância nos estudos: validar informação é fundamental

Web

Boa tarde.
Queria ter postado isso antes (na época que estava estudando pra 70-461) mas acabei esquecendo, hehe.

Bem, a lição de hoje é:

Preste bem atenção na sua fonte de estudo e não confie sem validar.

Sendo óbvio e redundante, convenhamos  que o ser humano erra, pois não é perfeito. Quem nunca errou que atire a primeira transação.

Mas enfim, o que ia postar na época era esta questão que veio junto com o prep-kit do Training Kit 70-461 (Microsoft SQL Server 2012 Querying).

Clique na imagem para melhor visualização, por gentileza:

Observe

Resumindo…

SCRIPT de CREATE de duas tabelas.

Uma procedure.

A procedure supostamente tem como objetivo inserir os dados de uma tabela em outra.

Sabe qual é a opção correta para fazer o script inserir sem nenhum problema os dados da Tabela A pra B?

Nenhuma

A resposta

Explicando melhor, é possível ver qual seria a resposta do simulado detalhando em um botão.

Não vamos entrar no mérito do assunto IDENTITY (porque o assunto merecia mais algum texto) , então decidi deixar aqui a resposta oficial do Prep-kit (destacada de amarelo) e um questionamento destacado de vermelho.

ping

A resposta proposta parece estar correta, se levarmos em conta a ordem das colunas e apenas isso. Mas, vale lembrar que ambas as tabelas possuem o campo orderid como identity…  Tentar inserir valores explicitamente sem o uso de um SET apropriado para isso (como por exemplo, o SET IDENTITY_INSERT ) dará erro, e infelizmente tal configuração sequer foi mencionada na questão, então podemos desconsiderá-la. Portanto, no mundo sem treino, da teoria, a alternativa C estaria correta. No mundo real, não, inclusive é um erro bem recorrente em projetos de ETL inserções invalidas deste tipo.

Mas o que você quer dizer com isso tudo?

Que não importa a fonte, valide informações técnicas, testando e lendo de outras fontes.

E por mais que a fonte possa parecer impecável, erros podem acontecer. Note que a questão veio do Training Kit. É o material oficial de preparatório para o exame. E deixando claro aqui, é um bom material em linhas gerais, não venho aqui no artigo reclamar do mesmo. A minha intenção foi outra (de alertar sobre a validação de informação) e transmitir uma informação incorreta (ou questionável) é um ato passível pra qualquer ser humano (inclusive, se eu tiver passado algo assim, me alertem sem dó).

Resumindo, não confie em ninguém (recomendação de leitura fortíssima).

Teste. Valide SEMPRE.  Seja curioso. Repita alguns testes pra aumentar a certeza.

Pode parecer besteira, mas este tipo de cilada em exames de certificação significa alguns pontos perdidos, e na vida real, pode significar alguns minutos perdidos enfrentando troubleshootings de qualquer tipo pra depois falar “pô mas eu não tinha entendido assim”.  E isso é uma realidade bem palpável.

Fique à vontade para comentar, dar sua impressão sobre o assunto.

[]’s

Impressões sobre o Exame 70-461: SQL Server 2012 – Querying

query

Boa noite 🙂

Quarta passada tive êxito no exame 70-461: Querying, o primeiro capítulo da trilogia MCSA.

Se você não conhece o funcionamento sobre a nova trilha certificação, verifique este link, baixe os webcasts e veja como funciona.

Dei uma folheada Training Kit 70-461 e usei como base séria o Skills Measure . Pra não sair no escuro, dei uma lida também, durante um bom tempo, em impressões de outros profissionais que fizeram essa prova. Você pode dar uma pesquisada na internet que com certeza acha. Só pra saber onde eu direcionava mais atenção. E meu post tem esse intuito, de quem sabe, fazer essas dicas úteis pra quem vai prestar o exame.

A forma de prática foi o Prep-Kit, que vem junto com o Training Kit.
Recomendo o uso do Prep-kit apenas para reforçar conceitos e revisar comandos e não para pegar o ritmo da prova, que é bem diferente, sendo supérfluo e sem complexidade alguma! Não tem como comparar o nível de dificuldade do Prep-kit com a prova, btw.

O que mais me prejudicou na prova, e sim, prepare pra rir: marquei, sem querer, a prova em Português. Não cometa esse erro jamais na sua vida. As traduções em português não estão “ruins”, só não estão compatíveis com o bom senso. Por exemplo, é fácil reconhecer VIEWS em banco de dados, mas não “Modos de Exibição”. Teve vários termos, que eu nem consigo mais lembrar de tão exóticos que são. Alguns traduzidos de forma extremamente literal. Até demais. “Larga de frescura rapaz!” – disse alguém. Mas quero ver esse alguém sacar NA HORA o que significa “Função definida pelo usuário com valor de tabela”. Rola um WAITFOR na cabeça, pelo menos na minha. A massa cinza até processa a tradução mas não na hora 🙂

Enfim, compartilho algumas dicas importantes pra quem for prestar o exame:

– Aprenda e PRATIQUE todos os tipos de função, principalmente as TVF (Table Value Functions);

– FOR XML PATH, AUTO e RAW. Vai cair, saiba o que cada cláusula traz e qual é a estrutura do XML. Saiba olhar para determinado XML e imaginar qual FOR XML gerou;

– Modos de Isolamento. Saiba qual causa mais bloqueios, o padrão do SQL Server, o que “versiona” os registros e o que evita leitura suja…

– Views indexadas. Saiba usar SCHEMABINDING. Aliás, views estão bastante em foco neste exame, inclusive para operações DML. De foco nessa parte!

– Relembre: INTERSECT, UNION, UNION ALL, DISTINCT,  ALL, SOME, ANY, RANK FUNCTION…

– CONSTRAINTS em geral. Computed Columns, inclusive com funções;

– Questões DRAG and DROP parecem fáceis. Mas o ‘cão’ mora nos detalhes…Preste bastante atenção no enunciado da questão. Por exemplo, se na questão disse que o usuário USRXPTO já possui acesso de leitura na tabela XPTO, e você deve ALTERAR a tabela mantendo as permissões, você não vai dar um DROP, CREATE e GRANT ou seja lá o que for desnecessários, certo? Se você for alterar, nesse caso, também não precisa do GRANT. Saiba também que criar um campo NOT NULL em tabela já populada não é nenhum almoço grátis. Saiba como resolver esse tipo de pedido.Enfim, parece besteira, mas quem não pratica isso ou nunca teve experiência, pode perder muitos pontos com questões do gênero.

– Essa prova tem um foco exagerado em views (já falei, mas reforço). Pratique inserir/atualizar/deletar alguns registros nela (sim, é possível, via trigger instead of). Inclusive em views que possuem SELECT em mais de uma tabela (dica de ouro);

– Planos de Execução: Aprenda as formas de visualizá-lo;

– Tabelas inserted e deleted + triggers são essenciais. Aliás triggers foram assuntos bem presentes, não tanto quanto VIEWS, mas quase;

– Cairam algumas cláusulas novas: LEAD, LAG , EOMONTH, FORMAT, TRY_CONVERT, PARSE, dentre outros. Inclusive, caiu uma questão de EOMONTH combinada com DATEADD que me confundiu bastante, principalmente por não ter oportunidade de validar o código ):

– Saiba o que faz um PIVOT, UNPIVOT e APPLY (Outer e Cross). Não precisa focar seu estudo nisso (estou pensando em economia de tempo), apenas saiba em que situação aplicar;

– Diferencie newid e newsequentialid, saiba o que cada um faz e TESTE!

– Pratique abrir transações com tratamento de erros. Nada complexo pra quem já trabalha com T-SQL: TRY, CATCH, @@ERRORCOUNT e outras variáveis comuns à transações podem cair. Conhecer o funcionamento do XACT_ABORT e conhecer Triggers que fazem o uso deste tipo de programação é fundamental!

Creio que são informações úteis para quem está estudando. Claro que a prova vai muito além, e esses tópicos acima estiveram presentes no exame que fiz, então, reforço, não deixe de estudar pelo Skills Measure e não se limite ao que foi dito acima.

Uma coisa que me chamou bastante a atenção é que conhecer T-SQL, mas não praticar pode ser um perigo potencial no exame. Existem alguns peguinhas que só quem codifica no dia a dia e executa vai identificar. Parece uma frase clichê, e não deixa de ser, mas é uma verdade crua nessa prova.

E  Socorro, se tiver lendo isto, obrigado pelas dicas e conhecimentos trocados, especialmente as de XML o/

E é isso pessoal.

Estou estudando agora para a 70-462 agora e já tô preocupado com a 70-463 (BI).

[]’s