Livro – SQL Server: Além do Conceito II

Pessoal, bom dia.
O novo volume do SQL Server: Além do Conceito foi finalizado e publicado.
“O segundo volume da série “SQL Server Além do Conceito” traz agora um conjunto multidisciplinar de capítulos originais, escritos exclusivamente para esta obra. Mais uma vez um grupo de profissionais de diversas áreas do SQL Server se juntaram e escreveram capítulos em suas áreas de domínio. Baixe agora sua cópia e mergulhe no mundo a partir da visão destes autores que dedicaram seu tempo para escrever sobre Administração, Desenvovimento e Business Intelligence.”
FotoLivro
Opcionalmente, vocês podem baixar o pdf do livro no link abaixo ou no blog dos demais autores.
Link OneDrive
Link Amazon
Um abraço e até a próxima edição,
Advertisements
Categories: Uncategorized

SQL Saturday #488 – Joinville

Pessoal, boa noite.

No último sábado tive a honra de participar do SQL Saturday realizado em Joinville. O evento foi demais, muitas pessoas participando, palestras excelentes, uma organização tremenda e um final com muitos brindes.

Queria agradecer as quase cem pessoas que puderam assisitir a minha sessão, pois,  foi bem produtivo com as dúvidas.

Estou disponibilizando o material que foi utilizado no site do evento:

http://www.sqlsaturday.com/488/Sessions/Schedule.aspx

Me coloco a disposição em caso de alguma dúvida.

Ta-Ta for now

Categories: Uncategorized

Codificando Night Week 2016 – EU Estarei Lá

Fala pessoal, tudo bem ?

Entre os dias 22/02 a 26/02 acontecerá o evento anual Codificando Night Week desse ano. Esse evento é organizado pelos MVPs e Líderes da comunidade e nessa edição teremos 20 palestras durante 5 noites. As palestras serão on line e GRATUITAS, então não fique de fora.

Fiquei muito feliz quando recebi um e-mail dizendo que minha palestra foi aceito para esse evento. Essa é a primeira vez que irei palestrar e gostaria de convidá-los para participar. Se você é um DEV que gostaria de saber um pouco mais sobre SQL Server para apoiar o DBA da sua empresa ou se você é o DBA que gostaria de entender as dificuldades e desafio da sua equipe de desenvolvimento do dia-a-dia, então venha participar da minha sessão que se chama: SQL para Desenvolvedores no dia 22/02 as 22:00.

Link do evento – Inscreva-se e participe
http://codificandoweek.azurewebsites.net/

Fico no seu aguardo e até lá!!!!

Categories: Uncategorized

SQL Saturday 488 – Joinville

Boa noite pessoal, tudo bom?? Espero que sim.

É com muito orgulho em dizer que minha palestra foi aprovada para o SQL Saturday de Joinville. O SQL Saturday é um evento aonde é reunido diversos profissionais de SQL Server do Brazil. Eles  estarão contando suas experiências do dia-a-dia em campo e compartilhando conhecimento de grande valia. Venha participar, conhecer pessoas, tirar dúvidas e saber das novidades que lhe esperam e sem nenhum custo.

O evento acontecerá no dia 09 de Abril de 2016, maiores informações veja no site do evento:

http://www.sqlsaturday.com/488/EventHome.aspx

Ainda não sabe o que vai ver? Monte sua agenda com antecedência e vá “degustar” tudo que o evento tem de bom para oferecer.

http://www.sqlsaturday.com/488/Sessions/Schedule.aspx

Mais uma vez muito obrigado e nos vemos lá as 10:30 para falar mais sobre Performance e Tuning.

 

 

Categories: Uncategorized

Novidades do SQL Server 2016

Galera, boa noite.

E começa o ano de 2016 com muitas novidades sobre o SQL Server. Como a tecnologia não para nunca e nós sempre estamos tentando levar um conteúdo atualizado para comunidade, comecei com um webcast sobre o SQL Server 2016.

A organização do webcast e divulgação foi feito pelo Vitor Fava do SQL Maniacs. No webcast falei de algumas novas features do SQL Server 2016 que estão disponíveis na versão CTP e onde algumas delas podem ser utilizadas no dia-a-dia.

Fique  a vontade para ver o conteúdo no blog do Fava no link abaixo:

https://vfava.wordpress.com/2016/02/04/gravacao-do-webcast-novidades-do-sql-server-2016/

Ou direto no youtube:

 

Muito Obrigado e “Ta-Ta for Now”

Categories: Uncategorized

Conhecendo um pouco de performance

Fala Galera, boa noite.

Tudo bem? Faz tempo neh!? Hoje não colocarei o desafio de T-SQL (não ainda..rs). Hoje vim pra divulgar um assunto que também estava ficando um pouco desatualizado ,mas, como algumas pessoas não conseguiram comparecer e algumas não ficaram sabendo, estou divulgando aqui no blog.

No dia 03/12 tivemos a última reunião, do ano de 2015, do SQLManiacs  organizada pelo Vitor Fava, onde eu falei um pouco de performance e tuning (novidade..) utilizando alguns cenários práticos do dia-a-dia.

Para quem tiver interesse em reproduzir todos os cenários descritos na reunião, basta fazer o download dos scripts através do link abaixo:

Reunião do SQLManiacs – Conhecendo um pouco de performance

Ou ir até o blog do Fava, pois, lá possui mais algumas informações, fotos e etc.

https://vfava.wordpress.com/2015/12/08/reuniao-do-sqlmaniacs-conhecendo-um-pouco-de-performance-3/

Muito Obrigado e até a próxima

 

 

Desafio T-SQL

Ola pessoal, tudo bem?

Essa semana presenciei um caso aonde era necessário ajudar a desenvolver uma instrução T-SQL que fugia um pouco do nosso dia-a-dia, devido a isso resolvir postar no blog um desafio para compartilhar com todos a solução depois. Espero que muitas pessoas participem.

Vamos ao cenário.

Imagine que o Sistema X realiza o “track” de contratos de uma instituição financeira que são gerados pelo sistema Y, no entanto,o sistema Y gera mais de UMA LINHA para cada contrato toda vez que esse contrato é renegociado. Isso significa que, cada conjunto de contrato no sistema Y terá mais de uma linha baseando-se no número de contrato mais codigo de movimentação do mesmo (Contrato + Mov). Vejam um sample dos dados, conforme a seguir:

O sistema X precisa transformar o resulte set da imagem anterior em um único registro levando as seguintes regras em consideração:

  1. O status 0 significa – Precisa ser avaliado. O Status 1 significa: Registro Válido e o Status 2 significa que o registro pode ser descartado.
  2. Se o os valores em Dt1 e Dt2 for NULOS para para um conjunto de registro (Contrato + Processo) utilizo o registro com a MENOR DtReal.
    1. Obs: O print não atende essa condição, mas, consideraria asegunda linha da minha tabela:

       

       

  3. Se algum dos valores em Dt1 e Dt2 não for NULO para um conjunto de registro (Contrato + Processo) utilizo o registro com a MAIOR DtReal como base.
  4. Quando a regra de número 3 for atendida é necessário “montar” o registro com a seguinte “sub-regra”:
    1. Se o MAX VALUE da coluna Dt1 do conjunto de registro (Contrato + Processo) for maior ou igual a minha DtReal da linha atual, considero o MAX (no caso o valor 25/08/2013) para essa coluna. (Nesse caso minha coluna DtReal seria 22/08/2013 + Dt1 = 25/08/2013). No entanto, temos outra “regrinha” que no caso a regra “4.b”.
    2. Se o MAX VALUE da coluna Dt1 do conjunto de registro (Contrato + Processo) for maior ou igual ao MAX VALUE da DtReal do conjunto de registro (Contrato + Processo) o valor da coluna DtReal DEVE ser a menor data.O registro deve ser como a seguir:

       

  5. Se o MAX VALUE da coluna Dt1 do conjunto de registro (Contrato + Processo) NÃO for maior que a minha linha BASE (no caso a DtReal=22/08/2013, seguindo a regra de número 3) , conforme print:

    Nesse caso minha linha deve ser montada da seguinte maneira:

  6. Minha última regra consiste no seguinte: Se o MAX VALUE da coluna Dt1 do conjunto de registro (Contrato + Processo) NÃO for maior que a minha linha BASE (no caso a DtReal=22/08/2013, seguindo a regra de número 3) E o valor da Coluna Dt1 da linha BASE (no caso a linha que possi o valor DtReal = 22/08/2013) NÃO for NULA, minha linha consiste na DtReal + Dt1 daquela linha. Veja o cenário:

     

    Para a regra de número 6 o meu registro deve ser algo mais o menos assim:

     

     

Observações:

  • Os registros que devem aparecer na solução no final devem ter o valor da coluna Status modificado para 1
  • A solução pode ser escrita nas seguintes versões do SQL Server: 2008,200R2, 2012 e 2014.
  • A solução pode ser feita em mais de uma consulta para atender as regras.
  • Não é permitido a ulização de abordagens linha-a-linha (While e CUSRSOR)

Estou disponibilizando o script que monta os cenários com todos os registros. A ideeia inicial é desenvolver um pouco a lógica e fazer exercícios de T-SQL. No futuro podemos utilizar o mesmo cenário e avaliar o desempenho das sugestões que serão enviadas e discutir todas elas.

use tempdb

go

–Create sample datas

CREATE
TABLE #T
(Contrato VARCHAR(50), Mov INT, DtReal date, Dt1 date, Dt2 date,[Status] tinyint)

–DROP TABLE #T

INSERT
INTO #T(Contrato, Mov,DtReal,Dt1,Dt2, [Status])


VALUES


(’00XXXXX.25.0000′, 80193, ‘20130701’,
NULL        ,NULL,0)


,(’00XXXXX.25.0000′, 80193, ‘20130617’,
NULL        ,NULL,0)


,(’00XXXXX.25.0000′, 80193, ‘20130821’, ‘20130825’    ,NULL,0)


,(’00XXXXX.25.0000′, 80193, ‘20130822’,
NULL        ,NULL,0)

 

            ,(’00YYYYY.26.0000′, 80192, ‘20130701’, ‘20130820’    ,NULL,0)


,(’00YYYYY.26.0000′, 80192, ‘20130617’,
NULL        ,NULL,0)


,(’00YYYYY.26.0000′, 80192, ‘20130821’,
NULL        ,NULL,0)


,(’00YYYYY.26.0000′, 80192, ‘20130822’,
NULL        ,NULL,0)

 


,(’00ZZZZZ.27.0000′, 80194, ‘20130701’,
NULL        ,NULL,0)


,(’00ZZZZZ.27.0000′, 80194, ‘20130617’, ‘20130825’    ,NULL,0)


,(’00ZZZZZ.27.0000′, 80194, ‘20130821’,
NULL        ,NULL,0)


,(’00ZZZZZ.27.0000′, 80194, ‘20130822’, ‘20130821’    ,NULL,0)

 


,(’00WWWWW.28.0000′, 80195, ‘20130701’,
NULL        ,NULL,0)


,(’00WWWWW.28.0000′, 80195, ‘20130617’, ‘20130820’    ,NULL,0)


,(’00WWWWW.28.0000′, 80195, ‘20130821’,
NULL        ,NULL,0)


,(’00WWWWW.28.0000′, 80195, ‘20130822’, ‘20130821’    ,NULL,0)

 

            ,(’00KKKKK.29.0000′, 80196, ‘20130701’,
NULL        ,NULL,0)


,(’00KKKKK.29.0000′, 80196, ‘20130617’,
NULL        ,NULL,0)


,(’00KKKKK.29.0000′, 80196, ‘20130821’,
NULL        ,NULL,0)


,(’00KKKKK.29.0000′, 80196, ‘20130822’,
NULL        ,NULL,0)

 

            ,(’00AAAAA.30.0000′, 80196, ‘20130701’,
NULL        ,NULL,0)


,(’00AAAAA.30.0000′, 80196, ‘20130602’,
NULL        ,NULL,0)


,(’00AAAAA.30.0000′, 80196, ‘20130821’,
NULL        ,NULL,0)


,(’00AAAAA.30.0000′, 80196, ‘20130822’,
NULL        ,NULL,0)

 

            ,(’00BBBBB.19.0000′, 80196, ‘20130701’,
NULL        ,NULL,0)


,(’00BBBBB.19.0000′, 80196, ‘20130502’,
NULL        ,NULL,0)


,(’00BBBBB.19.0000′, 80196, ‘20130821’,
NULL        ,NULL,0)


,(’00BBBBB.19.0000′, 80196, ‘20130822’,
NULL        ,NULL,0)

 

Aguardo o script com a solução por e-mail. Fiquem a vontade para discutirmos. O Resultado da consulta deve ser o da imagem abaixo:

Thiago Carlos [TC] de Alencar