SQL Server 2012 – Cláusula CONCAT() e o que isso significa pra galáxia

golphin

Bom dia. Post rápido, de nível básico pra não deixar água parada 🙂

Vários Sistemas Gerenciadores de Bancos de Dados (ou DBMS, no original) utilizam, pra concatenar, ou seja, juntar textos, pipes (o símbolo  –> | <–)  sendo que o padrão ANSI-92 prevê dois pipes como concatenação (mas não é obrigado a ser seguido tanto que o SQL Server não o faz) ou a função CONCAT(), que é bastante popular no Oracle e no MySQL. SQL Server, por sua vez, sempre concatenou os textos com o símbolo + (plus, conhecimento popularmente como MAIS).

Felizmente, assim como de costume em cada release, novos comandos (ou velhos, dependendo do ponto de vista) são adicionados no SQL Server de modo a facilitar a portabilidade entre sistemas. Aliás, features assim eu já vejo de cara como tentativa da MS de justificar migrações de código, deixando-as menos penosas. Mas bem, adivinha quem entrou como alternativa pra concatenações no SQL Server?

THIS GUY  ————> link

Mas essa ainda não é a maior vantagem do CONCAT sobre o método tradicional. Observe que todos os envolvidos na concatenação eram tipos textuais. Mas e nos casos comuns, onde geralmente temos que concatenar texto com números?

Msg 245, Level 16, State 1, Line 11
Conversion failed when converting the varchar value ‘SQL SERVER ‘ to data type int.

A mensagem é clara demais…Ele tenta concatenar um número com texto e falha. Pra que o código acima rodasse tranquilamente, era necessário um CAST ou CONVERT na variável @release para um tipo textual, sendo possível assim realizar a concatenação. Exemplo:

Significa que quando recebermos a tarefa de migrar um script do MySQL ou Oracle pra SQL Server por exemplo, teremos menos uma dor de cabeça em relação a cláusula de concatenação, já que a função agora é a mesma. Parece uma mudança irrelevante e sem graça, e de fato, perto do que o 2012 traz, não é aquela senhora feature, mas achei um passo até notável. Alguns pontos:

1) Evite sempre que possível o uso de extensões proprietárias. Prefira sempre comandos ANSI e se não houver, algo de sintaxe similar ou que seja comum a outros bancos. Isso facilita o reuso, migrações de código entre plataformas. SEMPRE pense nisso quando for desenvolver algo em SQL.

2) Concatenação geralmente é um recurso bastante presente em códigos legados. Não precisar portar boa (senão toda) parte dele é economia de tempo. Isso tem impacto sobre sua vida, sua produtividade e na vida dos ursos no polo norte.

3) SQL Server cada vez mais se torna amigável adaptando em si alguns recursos que são usados de modo frequente. Vejo isso como uma oportunidade  de desmistificar pra profissionais que mexem com outros sistemas que MSSQL é algo de outro mundo (sendo que nem é e possui inclusive um dos dialetos (T-SQL) mais fáceis entre os disponíveis). O uso destes recursos pelo desenvolvedor possibilita a propagação dessa idéia. ;

4) Desenvolvedores (T)-SQL fazem com que o código mais universal  reduzam o impacto de meteoritos para longe da órbita do planeta Migrations;

Enfim, recomendo que você use CONCAT() sempre que possível partindo da versão SQL Server 2012 se não houver envolvimento com o legado, é claro.

[]’s

Vamos estudar SQL Server 2012?

birds

Boa noite Pessoal! Post rápido e preguiço devido às correrias da vida.

Estou bastante contente (e empolgado, não tem como esconder) sobre SQL Server atualmente. Comecei a estudar em conjunto pra prova de certificação (exame 70-461) e isso tem gerado resultados mais eficientes em comparação ao estudo individual. Até então, meu contato com SQL Server 2012 se restringia apenas a leitura, uma logada+fuçada  em uma coisa ou outra, mas agora vai (!) , e vou refletir isso em postagens aqui no blog, reforçando aqui meu compromisso de usar o wordpress de verdade 🙂

Resolvi, além disso, deixar o convite para quem tá afim de dar uma mexida também:

  • Baixe o SQL Server 2012 Evaluation (Ou trial/teste, como preferir) aqui
  • Algumas novidades no T-SQL do 2012 bem explicadas aqui
  • O conteúdo da prova de Querying (primeira prova) mencionada no post aqui
  • Caso tenha dúvida e precise de uma mão, depois de dar aquela garimpada de leve na documentação oficial (Books Online/MSDN) e internet, a comunidade SQL Server está presente em peso nos fóruns.
  • Tem material no MVA também neste link:

Outros fóruns e blogs relacionados ao conteúdo estão aí disponíveis também. Não vou postar por pura preguiça, e acho que leitura de blog deve ser on-demand de acordo com o internauts.

Eu sei que é um tanto engraçado em meados de 2013 eu dizer, no título, pra estudar a versão 2012 sendo que a 2014 já está aí, kkkkkkkk. Mas bem, levando em conta que eu estava estudando/trabalhando/lendo sobre o 2008 R2, só deu pra dizer isso agora.

Por enquanto é isso. Até!

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!

Impressões sobre o exame 98-364: MTA: Database Administration Fundamentals

Era pra lembrar dados

O Senai MIC de Brasília deu uma oportunidade bacana pra tirar certificações MTA de graça por tempo limitado. Em suma, divulgaram, liberaram o link de inscrição e quem conseguiu se inscrever, voalá, deixou de pagar 69$ pra fazer a prova. Quem sabe eles resolvam abrir de novo, fiquemos de olho. Eu fiz a prova e queria falar um pouco sobre ela, sobre minhas percepções acerca da prova.

A MTA (Microsoft Technology Associate) é uma categoria de certificação que foi idealizada para estudantes e pessoas que desejam entrar no mercado de TI. Mais especificamente, ela diz o seguinte “Fulano possui os requisitos básicos sobre determinado assunto” e pronto. No site da MS, é explicado o nível em que se situa o MTA no plano de certificações, confira mais informações sobre aqui.

No caso dessa prova em específico (Database Administration), ela testa seus fundamentos em banco de dados, então, independente de se conhecer SQL Server, Oracle, MySQL, a prova apresenta o mesmo nível de dificuldade, embora a sintaxe seja levemente puxada para o T-SQL do SQL Server. Sem querer ser chato, mas vi alguns profissionais dizendo que “é uma vergonha tirar uma prova de nível tão básico se já trabalha na área”. Eu penso diferente. Penso que ainda é uma certificação sendo fácil ou não, o que quer dizer muita coisa, e não digo o papel (ou pdf) em si, mas sim sobre o preparo, a consolidação do que se conhece, a atestação disto mediante um desafio e do incentivo que ela tráz pra correr atrás de maiores patamares.

Para quem já trabalha na área, como eu, tirá-la tráz outras experiências bacanas. A primeira dela é que pude consolidar fundamentos (mesmo o conteúdo sendo relativamente tranquilo pra quem já trabalha com BD’s, a ocasião me fez rever alguns conceitos que vi na faculdade um século atraz e me trouxe informação extra no processo. E fortalecer conceitos nunca é demais), a segunda é que tive a experiência de tirar minha primeira certificação em TI (então pude sentir ao vivo o clima de fazer a prova em outro idioma e com perguntas interpretativas) e a terceira é que me motivou bastante a correr atrás de níveis maiores (estou estudando pra 70-432 MCTS Implementation and Maintenance) e consequentemente, de estudar mais.

Agora, de fato, falarei sobre o exame:

O mundo dos bancos de dados relacionais é um tanto quanto amplo. Envolve diversos tipos de conhecimento/áreas, que são: modelagem, administração, desenvolvimento, por exemplo. Essa MTA divide as questões nas seguintes categorias (segundo critério da Microsoft) ao longo de 35 questões (sendo necessários 70 pontos pra passar na média, cada questão vale +- 2.8 pts):

Understanding Core Database Concepts – 23%
Creating Database Objects – 23%
Manipulating Data – 26%
Understanding Data Storage – 17%
Administering a Database – 11%

As questões são de múltipla escolha. Daquele modelo mesmo: Te dá um problema e você seleciona a opção correspondente.

O que eu lembro que caiu na prova, e vou falar aqui levianamente pra vocês terem uma ideia (não posso reproduzir as questões por motivo de contrato) do que é importante saber:

– Qual a diferença entre um Clustered Index e um Non-Clustered Index?

– Qual a diferença entre uma Stored Procedure e uma Function?

– Diversas questões sobre comandos DML (UPDATE, INSERT, DELETE) geralmente com peguinhas de sintaxe. Muita atenção nisso caso você não tenha o hábito de construir queries;

– Duas questões sobre normalização (Uma pergunta sobre a vantagem da Desnormalização e outra sobre a característica da 2FN);

– Diferença entre DROP e DELETE (Que ainda pega muita gente, acredito);

– Uma questão sobre GROUP BY (Pra evitar aquele erro clássico de esquecer de agrupar quem tá por fora das funções de agregação);

– Algumas questões com comandos inseridos fora de ordem. Tipo um SELECT seguido de ORDER BY e depois WHERE. Isso vai contra a lógica de execução de consulta e eles embutiram essa pegadinha em várias questões;

– Comandos DML, DCL e DDL (Dado um comando, definir de qual categoria ele é. Por exemplo, o CREATE é um DDL).

– Uso do operador LIKE (especificamente a famosa sintaxe da pegadinha do %malandro%. É, os percents, que chamamos no SQL de Wilcard);

– Etc (aka não me lembro do restante);

Pra quem já trabalha com banco de dados a prova foi tranquila. Pra quem desenvolve e tem pouco contato, ela possivelmente foi um pouco tensa e pra quem não tem os fundamentos, ou só tem os de faculdade/cursos sem experiência prática, ela pode ser muito difícil principalmente pela média de aprovação. Portanto, nessa última situação, recomendo instalar o SQL Server na máquina (ou o seu RDBMS amigo de fé, colega, amante, tanto faz), instalar um banco de exemplo(Adventure Works sempre é muito recomendado caso vá instalar no SQL Server, o que eu recomendo) e ir desbravando criando consultas, errando bastante e acertando muito mais (o que é totalmente válido quando NÃO SE ESTÁ EM AMBIENTE DE PRODUÇÃO, kkk) e dando uma lida ou outra em alguns conceitos.

Pra todos os efeitos, uma dica pessoal que dou é procurar ler material em inglês, e sem querer assustar, saber inglês mais pra frente não vai se tornar um diferencial, e sim requisito, então quanto antes houver esse hábito durante os estudos melhor.

Enfim, desejo boa sorte caso você esteja interessado nessa certificação e espero que as informações acima ajudem de alguma forma.

[]’s

print ‘Hello World’;

Ideia: Fazer um blog

Tentando ser o mais breve possível, explicar quem sou eu e o motivo de blogar.

Meu nome é Renato, recém-formado em Sistemas de Informação e sempre gostei da área De TI, porém até então não tinha muita certeza sobre o que gostaria de fazer em relação à vida profissional até que depois de lidar com  banco de dados durante uns três anos da minha vida decidi dedicar mais tempo e atenção para a ferramenta (ou melhor, suíte) SQL Server. Sempre tive interesse, mas faltava atitude, que recentemente foi despertada graças à alguns profissionais  que direta ou indiretamente me ensinaram e aperfeiçoaram o que eu sei (que ainda é muito básico) e realmente me deixaram animado pra estudar pra valer.

O objetivo do blog é compartilhar algumas dicas/informações sobre banco de dados (SQL Server em especial), Desenvolvimento e TI. Me interesso pela área de administração e desenvolvimento  e as postagens terão foco geralmente nesse tipo de assunto. Posso me desvirtuar e postar também sobre outras temáticas (geralmente englobadas na TI) ou outros, vai depender do humor.

Então é isso. Seja bem vindo(a).