Material de Apoio – Abril 2020

Material de Apoio número 167….


Bom dia, bom dia, bom dia…

Seja bem-vindo a mais um post da sessão Material de Apoio.

Como tem passou estes dias desde o nosso último post? Tenho a noção que não esta sendo fácil aguentar esta quarentena, não é mesmo! Todavia é o melhor que podemos fazer, ficar em casa nos cuidando e principalmente evitando que esta doença possa se espalhar ainda mais.

Pensando neste atual cenário, estou mais uma vez aqui no meu blog, neste sábado dia 18/04, o qual representa o meu 34º (Trigéssimo quarto) dia de quarentena, com o objetivo de empenhar-se para encontrar uma maneira de lhe auxiliar a passar o tempo, em adicional propor uma forma de renovar o aprendizado.

Introdução

Você vai encontrar em cada post desta sessão uma imagem que representa não exatamente o conteúdo do post, mas sim a época, período ou estação do ano em que o mesmo foi publicado, uma forma diferente e até mesmo divertida que encontrei para tentar te ajudar a se lembrar do que você acessou em mais esta visita.

Essa não é uma sugestão minha, tenho sempre recebido e-mails de visitantes que estavam gostando do conteúdo do post, mas as vezes não conseguiam se lembrar o que havia sido acessado, foi ai que pensei em adicionar uma imagem, figura ou símbolo que traga uma certa lembrança mais rápido e fácil ao visitante.

Para o post de hoje, nada mais coerente do que adicionar uma que representa a quarentena que estamos vivendo, a qual seria o símbolo que identificada o risco de morte,  denominada Figura 1 apresentada a seguir:

Image result for quarentenaFigura 1 – Símbolo que representa conteúdo compartilhado no post 167.

O post de hoje

Representa o primeiro post desta sessão no ano de 2020 e de número 167 no total da mesma.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Todos os arquivos compartilhados neste post, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados, foram concebidos com base nas atividades realizadas mediantes aos meus estudos e consultorias aplicadas ao Microsoft SQL Server em seus mais diversos recursos e funcionalidades.

Destaco que os arquivos a seguir, não necessariamente representam a melhor solução, na verdade os respectivos códigos e scripts satisfazem um possível entendimento da minha parte de acordo com o cenário ao qual o mesmo foi analisado e implementado.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

° Anexar arquivos;
° Banco de Dados;
° Cálculo de Juros;
° Cláusula From;
° Cláusula Order By;
° Cláusula Where;
° Comando Begin;
° Comando Begin Try;
° Comando Close;
° Comando Create Procedure;
° Comando Deallocate;
° Comando Declare;
° Comando Delete;
° Comando End Try;
° Comando Exec;
° Comando Fetch Next;
° Comando Insert;
° Comando Print;
° Comando Return;
° Comando Select;
° Comando Top;
° Comando Update;
° Comando Use;
° Cursor;
° Dias de Atraso;
° Diretiva Set NoCount;
° Extended Stored Procedure;
° Information_Schema;
° INFORMATION_SCHEMA.TABLES;
° Junções Inner Join;
° Nome de Colunas;
° Nome de Tabelas;
° Operador Lógico Condicional And;
° Operador Lógico Condicional IF;
° Operador Lógico Condicional Or;
° Operador Lógico Condicional While;
° Parcelas;
° SP_ExecuteSQL;
° System Function Concat();
° System Function DatabasePropertyEx();
° System Function IsNull;
° System Function Lower();
° System Function RTrim();
° System Stored Procedure;
° System Stored Procedure SP_Attach_Single_File_DB;
° Tipo de Dados NVarchar();
° Variáveis;
° Visão de Sistema Sys.Databases; e
° XP_CMDShell.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql ou abrir em algum editor de texto similar ao Notepad.

Material de Apoio

1 – Material de Apoio – Abril 2020 – Simulando a Somatória entre Data e Hora entre Compatibility_Levels diferentes.sql

2 – Material de Apoio – Abril 2020 – Identificando o horário de inicialização do Sistema Operacional.sql

3 – Material de Apoio – Abril 2020 – Simulando movimentação de estoque de acordo com o código e indicador de movimentação.sql

4 – Material de Apoio – Abril 2020 – Trazendo o nome da tabela armazenada na Information_Schema + Colunas.sql

5 – Material de Apoio – Abril 2020 – Anexando diversos arquivos de bancos de dados via linha de comando.sql

6 – Material de Apoio – Abril 2020 – Calculando o Juros Percentual com base na quantidade de dias de atraso.sql


Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2019/12/20/material-de-apoio-dezembro-2019/

https://pedrogalvaojunior.wordpress.com/2019/10/16/material-de-apoio-outubro-2019/

https://pedrogalvaojunior.wordpress.com/2019/08/20/material-de-apoio-agosto-2019/

https://pedrogalvaojunior.wordpress.com/2019/06/25/material-de-apoio-junho-2019/


Feedback

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação, preenchendo o formulário abaixo:


Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de junho de 2020.

Fique em casa, cuide de você e de sua família, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria, galeria e esperança.

Até mais.

Material de Apoio – Dezembro 2019

Material de Apoio número 166….


Muito boa tarde…..

Seja bem-vindo a mais um post da sessão Material de Apoio.

Como tem passou estes dias desde o nosso último post? Eu acredito que esteja tudo bem, pois não faz tanto tempo assim desde o nosso último encontro aqui no meu blog.

Introdução

Você vai encontrar em cada post desta sessão uma imagem que representa não exatamente o conteúdo do post, mas sim a época, período ou estação do ano em que o mesmo foi publicado, uma forma diferente e até mesmo divertida que encontrei para tentar te ajudar a se lembrar do que você acessou em mais esta visita.

Essa não é uma sugestão minha, tenho sempre recebido e-mails de visitantes que estavam gostando do conteúdo do post, mas as vezes não conseguiam se lembrar o que havia sido acessado, foi ai que pensei em adicionar uma imagem, figura ou símbolo que traga uma certa lembrança mais rápido e fácil ao visitante.

Para o post de hoje, nada mais coerente que do adicionar a imagem de uma árvore como símbolo, a qual seria um Pinheiro, denominada Figura 1 apresentada a seguir:

Image result for árvore pinheiroFigura 1 – Simbolo que representa conteúdo compartilhado no post 166.

O post de hoje

Representa o que encerra esta sessão no ano de 2019 e de número 166 no total da mesma.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Todos os arquivos compartilhados neste post, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados, foram concebidos com base nas atividades realizadas mediantes aos meus estudos e consultorias aplicadas ao Microsoft SQL Server em seus mais diversos recursos e funcionalidades.

Destaco que os arquivos a seguir, não necessariamente representam a melhor solução, na verdade os respectivos códigos e scripts satisfazem um possível entendimento da minha parte de acordo com o cenário ao qual o mesmo foi analisado e implementado.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

◦ Backup Database;
◦ Comando Alter Database;
◦ Comando Begin Transaction;
◦ Comando Checkpoint;
◦ Comando Commit Transaction;
◦ Comando Create Clustered Index;
◦ Comando Create Table;
◦ Comando DBCC CheckDB;
◦ Comando Declare;
◦ Comando Insert;
◦ Comando RollBack Transaction;
◦ Comando Select;
◦ Comando ShutDown;
◦ Comando Update;
◦ Comando Use;
◦ Comando While;
◦ Corromper Páginas de Dados;
◦ Criar Banco de Dados;
◦ Database Recovery Model;
◦ Database Status Emergency;
◦ Database UserAcess;
◦ Database Version;
◦ DataType BigInt;
◦ DataType Varchar();
◦ Diretiva Set NoCount;
◦ Falha em Ambiente de Banco de Dados;
◦ Index Clustered;
◦ Restaurar Páginas de Dados;
◦ Restore Database;
◦ System Function DATABASEPROPERTYEX();
◦ System Stored Procedure SP_Attach_DB;
◦ System Stored Procedure SP_DBOption; e
◦ System Stored Procedure SP_Detach_DB.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql ou abrir em algum editor de texto similar ao Notepad.

Material de Apoio

1 – Material de Apoio – Dezembro 2019 – Simulando como Corromper e Restaurar Páginas de Dados.sql

2 – Material de Apoio – Dezembro 2019 – Recuperação de Dados – Criando o Banco de Dados.sql

3 – Material de Apoio – Dezembro 2019 – Recuperação de Dados – Restauração de Backups e Recuperação do Banco de Dados.sql

4 – Material de Apoio – Dezembro 2019 – Recuperação de Dados – Simulando a Falha no Ambiente – Database – Status – Emergency.sql

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2019/10/16/material-de-apoio-outubro-2019/

https://pedrogalvaojunior.wordpress.com/2019/08/20/material-de-apoio-agosto-2019/

https://pedrogalvaojunior.wordpress.com/2019/06/25/material-de-apoio-junho-2019/

https://pedrogalvaojunior.wordpress.com/2019/04/17/material-de-apoio-abril-2019/


Feedback

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação, preenchendo o formulário abaixo:


Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de fevereiro de 2020.  Até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocados ao seu redor.

Um forte abraço, Feliz Natal e Próspero Ano Novo.

Obrigado.

Material de Apoio – Outubro 2019

Material de Apoio número 165….


Muito bom dia…..

 

Seja bem-vindo a mais um post da sessão Material de Apoio.

Como tem passou estes dias desde o nosso último post? Eu acredito que esteja tudo bem, pois não faz tanto tempo assim desde o nosso último encontro aqui no meu blog.

Quero aproveitar e compartilhar com você destacando o quanto este post é especial, nele além dos tradicionais arquivos e demais conteúdos disponibilizados, você vai encontrar duas novidades que preparei para serem adicionados a cada novo post da sessão Material de Apoio.

E ai, ficou curioso? Calma que a primeira novidade já esta logo abaixo.

Introdução

De uma forma mais objetiva e direta, você vai encontrar em cada post desta sessão uma imagem que representa não exatamente o conteúdo do post, mas sim a época, período ou estação do ano em que o mesmo foi publicado, uma forma diferente e até mesmo divertida que encontrei para tentar te ajudar a se lembrar do que você acessou em mais esta visita.

Essa não é uma sugestão minha, na verdade nos últimos dias recebi alguns e-mails de visitantes que estavam gostando do conteúdo do post, mas as vezes não conseguiam se lembrar o que havia sido acessado, foi ai que pensei em adicionar uma imagem, figura ou símbolo que traga uma certa lembrança mais rápido e fácil ao visitante.

Para o post de hoje, nada mais coerente que do adicionar a imagem de uma árvore como símbolo, a qual seria um Ipê amarelo, denominada Figura 1 apresentada a seguir:

Image result for Arvore IpeFigura 1 – Simbolo que representa conteúdo compartilhado no post 165.

Bom agora que já conhecemos a primeira novidade, vamos avançar mais um pouco e conhecer mais sobre o post de hoje e seu conteúdo.

O post de hoje

Este é o quinto post da sessão em 2019 e de número 165 no total da mesma.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Coletei os mais recentes scripts obtidos nos meses de agosto, setembro e outubro, oriundos de questões apresentadas nos fóruns MSDN/TechNet, é justamente ai que esta importante ferramenta disponível na internet aparece, todos os arquivos compartilhados neste post, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados, foram concebidos com base no entendimento das respectivas dúvidas relacionadas ao Microsoft SQL Server em seus mais diversos recursos e funcionalidades.

Destaco que os arquivos a seguir, não necessariamente foram considerados como respostas para as questões ou dúvidas, como também, não representam a melhor solução, na verdade os respectivos códigos e scripts satisfazem um possível entendimento da minha parte para com a  necessidade e interpretação do autor da dúvida em si.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

◦ 1 – Identity;
◦ 2 – Transações;
◦ 3 – Serviços do SQL Server;
◦ 4 – Extended Procedure XP_ServiceControl;
◦ 5 – Função Ident_Current;
◦ 6 – Função Scope_Identity;
◦ 7 – Variáveis de Sistema;
◦ 8 – Comando Begin Transaction;
◦ 9 – Comando Rollback Transaction;
◦ 10 – Comando Commit Transaction;
◦ 11 – Diretiva Set Identity_Insert On;
◦ 12 – Diretiva Set Identity_Insert Off;
◦ 13 – Sequencia Numérica;
◦ 14 – DMV sys.dm_server_services;
◦ 15 – Comando DBCC CheckIdent();
◦ 16 – Comando Create Table;
◦ 17 – Comando Insert;
◦ 18 – Comando Select;
◦ 19 – Visão de sistema sys.servers;
◦ 20 – Visão de sistema sys.sysservers;
◦ 21 – Comando Exec;
◦ 22 – Comando Update;
◦ 23 – Constraint Default;
◦ 24 – Data Type DateTime;
◦ 25 – Função GetDate();
◦ 26 – Envio de E-mails;
◦ 27 – Lista de Remententes;
◦ 28 – Função de sistmea sp_send_dbmail;
◦ 29 – Comando Distinct;
◦ 30 – Função Stuff(); e
◦ 31 – Formatação For XML Path().

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

1 – Material de Apoio – Outubro 2019 – Calculando transações por banco de dados desde a inicialização do serviço do SQL Server

2 – Material de Apoio – Outubro 2019 – Monitorando – Serviços SQL Server através da xp_servicecontrol

3 – Material de Apoio – Outubro 2019 – Identificando e analisando as diferenças entre Ident_Current, Scope_Identity e Variável de Sistema Identity

4 – Material de Apoio – Outubro 2019 – Identificando e contando as transações abertas através do Begin Transaction

5 – Material de Apoio – Outubro 2019 – Refazendo Numeração Identity

6 – Material de Apoio – Outubro 2019 – Diretiva Set Identity_Insert On

7 – Material de Apoio – Outubro 2019 – Criando Sequencia Numérica – Sem Identity

8 – Material de Apoio – Outubro 2019 – Enviando – Email – Lista de Remetentes

9 – Material de Apoio – Outubro 2019 – Utilizando – sys.dm_server_services – Identificando a conta que esta executando os serviços do SQL Server

10 – Material de Apoio – Outubro 2019 – Retornando a Relação de Serviços ou Servers – SQL Server

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2019/08/20/material-de-apoio-agosto-2019/

https://pedrogalvaojunior.wordpress.com/2019/06/25/material-de-apoio-junho-2019/

https://pedrogalvaojunior.wordpress.com/2019/04/17/material-de-apoio-abril-2019/

https://pedrogalvaojunior.wordpress.com/2019/02/04/material-de-apoio-fevereiro-2019/

 

Agora vou apresentar a segunda novidade, que ao meu ver é a mais importante, a sua participação o seu feedback, que em cada post será de suma importância, me ajudando de forma construtiva a melhor o conteúdo aqui compartilhado.


Feedback

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação, preenchendo o formulário abaixo:


Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de dezembro (2019 já encontra-se no seu fim), até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocados ao seu redor.

Um forte abraço, aproveite a sua semana.

Obrigado.

Material de Apoio – Agosto 2019


Hello everybody, good morning.

 

Seja bem-vindo a mais um post da sessão Material de Apoio. Como você tem passou estes dias desde o nosso último post? Eu acredito que esteja tudo bem, pois não faz tanto tempo assim desde o nosso último encontro aqui no meu blog.

 

Posso dizer que o mês de julho foi bastante intenso e repleto de atividades, mesmo estando alguns dias em casa e curtindo um pequeno Descanso em conjunto com a minha família, me dediquei muito a participar a manter uma das minhas principais atividades como MVP em Data Platform, cuidar dos fóruns MSDN/TechNet aqui no Brasil dedicados exclusivamente ao Microsoft SQL Server, não foi fácil, por incrível que parece nestes últimos 40 dias o volume de participantes e questões cresceu de forma considerável, isso é muito bom, várias e várias questões interessantes e desafiadoras, e como eu sempre digo aprender não custa nada, na verdade custa sim, custa você querer e se dedicar. Não é mesmo!

 

Mas qual é o motivo de iniciar mais este post falando sobre os fóruns MSDN/TechNet, calma, fique tranquilo, daqui a pouco você vai descobrir. Dando continuidade, estou de volta cumprindo a minha missão de colaborar e compartilhar com a comunidade técnica mais um post desta que é uma das sessões mais importantes existentes no meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação.

 

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o quarto post da sessão em 2019 e de número 164 no total da mesma.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje será um pouco diferente, estou trazendo alguns dos mais recentes scripts catalogados nos meses de junho e julho, oriundos de questões apresentadas nos fóruns MSDN/TechNet, é justamente ai que esta importante ferramenta disponível na internet aparece, todos os arquivos compartilhados neste post, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados, foram concebidos com base no entendimento das respectivas dúvidas relacionadas ao Microsoft SQL Server em seus mais diversos recursos e funcionalidades.

Destaco que os arquivos a seguir, não necessariamente foram considerados como respostas para as questões ou dúvidas, como também, não representam a melhor solução, na verdade os respectivos códigos e scripts satisfazem um possível entendimento da minha parte para com o possível entendimento e interpretação do que o participante post.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

◦ 1 – Bloqueios de Querys e Transações;
◦ 2 – Cláusula Where;
◦ 3 – Comando Begin
◦ 4 – Comando Case When;
◦ 5 – Comando Case;
◦ 6 – Comando Create Table
◦ 7 – Comando Declare;
◦ 8 – Comando End;
◦ 9 – Comando Insert;
◦ 10 – Comando Select;
◦ 11 – Comando Set;
◦ 12 – Comando Union All;
◦ 13 – Comando Union;
◦ 14 – Common Table Express
◦ 15 – Concatenação de Strings;
◦ 16 – Consumo de Energia;
◦ 17 – DataType Int,
◦ 18 – DataType SmallInt,
◦ 19 – DataType TinyInt;
◦ 20 – Derived Table
◦ 21 – Encontrando HeadBlockers;
◦ 22 – Extended Stored Procedure XP_Regread;
◦ 23 – Função Stuff();
◦ 24 – Gerando Totais e Subtotais;
◦ 25 – Isolation Level Read Committed;
◦ 26 – Isolation Level Read Uncommitted;
◦ 27 – Movimentação de Saldo de Estoque;
◦ 28 – Níveis de Hierarquia de dados;
◦ 29 – Níveis de Isolamento;
◦ 30 – Operador Cross Apply;
◦ 31 – Operador Lógico Condicional While;
◦ 32 – Operador Outer Apply;
◦ 33 – Transferindo o Saldo de Estoque para o próximo mês;
◦ 34 – Visão de Compatibilidade sys.sysprocesses.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

1 – Material de Apoio – Agosto – 2019 – Consultando as configurações de energia do servidor.sql

2 – Material de Apoio – Agosto – 2019 – Entendendo os operador Apply em conjunto com Cross e Outer.sql

3 – Material de Apoio – Agosto – 2019 – Identificando o nível de isolamento atualmente em uso.sql

4 – Material de Apoio – Agosto – 2019 – Montando uma Derived Table.sql

5 – Material de Apoio – Agosto – 2019 – Analisando movimentação de Saldos e transportando para o próximo mês caso necessário.sql

6 – Material de Apoio – Agosto – 2019 – Concatenação de string diretamente no select + Stuff.sql

7 – Material de Apoio – Agosto – 2019 – Encontrando HeadBlockers e resolvendo bloqueios.sql

8 – Material de Apoio – Agosto – 2019 – Gerando totais e subtotais parciais agrupando dados sem nível de hierarquia.sql

9 – Material de Apoio – Agosto – 2019 – Transaction Isolation Levels – Read Committed e Read Uncommitted.sql

10 – Material de Apoio – Agosto – 2019 – Criando uma agenda com intervalos de 30 minutos.sql

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2019/06/25/material-de-apoio-junho-2019/

https://pedrogalvaojunior.wordpress.com/2019/04/17/material-de-apoio-abril-2019/

https://pedrogalvaojunior.wordpress.com/2019/02/04/material-de-apoio-fevereiro-2019/

https://pedrogalvaojunior.wordpress.com/2018/12/18/material-de-apoio-dezembro-2018/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de outubro, até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocados ao seu redor.

A strong embrace, great health, success, we meet soon.

Thanks.

Material de Apoio – Junho 2019


Olá, muito boa tarde….

Tudo bem? Antes de começar este post, quero lhe perguntar: Esta preparado para férias de meio de ano? Ainda não, como diria aquele famoso apresentando “O louco meu…..”, poxa vida, eu não vejo a hora de poder descansar um pouco, mesmo não sendo férias, mas sim um pequeno recesso de 10 ou 15 dias já ajuda bastante.

Pois bem, antes de pensarmos neste merecido descanso, estou de volta cumprindo a minha missão de colaborar e compartilhar com a comunidade técnica mais um post da sessão Material de Apoio dedicado exclusivamente ao meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação.

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o terceiro post da sessão em 2019 e de número 163 no total da mesma.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts catalogados nos últimos meses, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

1 – Begin Catch;
2 – Begin Try;
3 – Buffer Page;
4 – Chave Estrangeira;
5 – Chave Primária;
6 – Cláusula From;
7 – Cláusula Where;
8 – Comando DBCC Ind;
9 – Comando DBCC Page;
10 – Comando DBCC TraceOff;
11 – Comando DBCC TraceOn;
12 – Comando Delete;
13 – Comando Exec;
14 – Comando Insert;
15 – Comando Order By;
16 – Comando Select;
17 – Comando Update;
18 – Create Function;
19 – Create Stored Procedure;
20 – Create Table;
21 – Create View;
22 – DataType Char();
23 – DataType Int;
24 – DataType SmallInt;
25 – Diretiva Set;
26 – End Catch;
27 – End Try;
28 – ForceSeek;
29 – Função Error_Line();
30 – Função Error_Message();
31 – Função Error_Number();
32 – Função Error_Procedure();
33 – Função Error_Severity();
34 – Função Error_State();
35 – Funções de Captura e Apresentação de Erros;
36 – Funções Analíticas;
37 – Funções de Ranking;
38 – Heap Table;
39 – Índices;
40 – Key Lookup;
41 – OffSet Table;
42 – Operador Lógico Condicional Case;
43 – Operador Lógico Condicional IF;
44 – Page Header;
45 – Páginas de Dados;
46 – Registros Fantasmas;
47 – System Table Sys.SysIndexes;
48 – System Table Sys.Tables;
49 – System View Sys.index_columns;
50 – System View Sys.indexes; e
51 – Tratamento de Erros e Exceções.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

1 – Material de Apoio – Junho – 2019 – Criando Stored Procedure + Tratamento de Erros com Begin Try.sql

2 – Material de Apoio – Junho – 2019 – Criando uma Heap Table, Adicionando Primary Key e Simulando uso de índices Clustered.sql

3 – Material de Apoio – Junho – 2019 – Simulando – Cenários de utilização de índices.sql

4 – Material de Apoio – Junho – 2019 – Simulando Key Lookup.sql

5 – Material de Apoio – Junho – 2019 – Acessando as informações sobre índices e página de dados.sql

6 – Material de Apoio – Junho – 2019 – Trabalhando com Views – Funções de Agregação – Junção de Tabelas.sql

7 – Material de Apoio – Junho – 2019 – Identificando as colunas utilizadas em uma view.sql

8 – Material de Apoio – Junho – 2019 – Utilizando Claúsula Output.sql

9 – Material de Apoio – Junho – 2019 – Trabalhando com funções de Ranking.sql

10 – Material de Apoio – Junho – 2019 – Trabalhando com funções analíticas.sql

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2019/04/17/material-de-apoio-abril-2019/

https://pedrogalvaojunior.wordpress.com/2019/02/04/material-de-apoio-fevereiro-2019/

https://pedrogalvaojunior.wordpress.com/2018/12/18/material-de-apoio-dezembro-2018/

https://pedrogalvaojunior.wordpress.com/2018/10/30/material-de-apoio-outubro-2018/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de agosto, até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocados ao seu redor.

Um forte abraço, muita saúde, sucesso, nos encontramos em breve.

Valeu.

Material de Apoio – Abril 2019


Olá, muito bom dia….

Tudo bem? Antes de começar este post, quero lhe perguntar: E ai já se pesou? Anotou na balança ou no seu banco de dados da tabela de pesos o quanto você esta pesando antes da páscoa! KKKK, é minha gente, estamos no mês de abril, a páscoa esta chegando e com ela o coelhinho trazendo muitos docinhos…..

Bom, antes de darmos aquela engordadinha com tantos chocolatinhos, balinhas e docinhos desta doce época do ano, estou de volta cumprindo a minha missão de  colaborar e compartilhar com a comunidade técnica mais um post da sessão Material de Apoio dedicado exclusivamente ao meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação.

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o segundo post da sessão em 2019 e de número 162 no total da mesma.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts catalogados nos últimos meses, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

  • Acessos;
  • Any Constraints;
  • Arquivo XLS;
  • Arquivo MDB;
  • Cálculo de dias úteis;
  • Casas Decimais;
  • Comando Backup Database;
  • Comando Backup Database With Move Option;
  • Comando Declare;
  • Comando Deny;
  • Comando Grant;
  • Comando Insert;
  • Comando OpenDataSource;
  • Comando OpenRowSet;
  • Comando Restore Database;
  • Comando Revoke;
  • Comando Select;
  • Comando Update;
  • Constraints;
  • Create Database;
  • Create Logins;
  • Create Table;
  • Create Users;
  • Declaração de Variáveis;
  • Delete Cascade;
  • Diretiva Set;
  • Drop Table;
  • Exportação de Dados;
  • Função CharIndex;
  • Função DataLength;
  • Função Floor;
  • Função Left;
  • Função Len;
  • Função Right;
  • Gerenciamento de acesso para Banco de Dados e Tabelas;
  • Importação de Dados;
  • Logins;
  • Microsoft Access;
  • Microsoft Excel;
  • Permissões;
  • Schemas;
  • Stored Procedure;
  • Stored Procedure SP_Attach_DB;
  • Stored Procedure SP_Detach_DB;
  • Tipo de Dados Decimal;
  • Tipo de Dados Int;
  • Tipo de Dados Money;
  • Update Cascade; e
  • Users.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

A seguir apresento a relação de arquivos  selecionados:

1 – Material de Apoio – Abril – 2019 – Comando – Alter Table + Any Constrainst.sql

2 – Material de Apoio – Abril – 2019 – Comando – Alter Table With NoCheck.sql

3 – Material de Apoio – Abril – 2019 – Identificando a quantidade de Casas Decimais.sql

4 – Material de Apoio – Abril – 2019 – Calculando Dias Úteis.sql

5 – Material de Apoio – Abril – 2019 – Realizando o Attach e Detach Database.sql

6 – Material de Apoio – Abril – 2019 – Gerenciando – Acesso para Banco de Dados.sql

7 – Material de Apoio – Abril – 2019 – Gerenciando – Acesso para Tables.sql

8 – Material de Apoio – Abril – 2019 – Stored Procedure P_ImportarBanco.sql

9 – Material de Apoio – Abril – 2019 – OpenDataSource lendo dados em um arquivo XLS.sql

10 – Material de Apoio – Abril – 2019 – Utilizando comando OpenRowSet para importar dados do Microsoft Access.sql

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/12/18/material-de-apoio-dezembro-2018/

https://pedrogalvaojunior.wordpress.com/2018/10/30/material-de-apoio-outubro-2018/

https://pedrogalvaojunior.wordpress.com/2018/08/14/material-de-apoio-agosto-2018/

https://pedrogalvaojunior.wordpress.com/2018/06/19/material-de-apoio-junho-2018/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de junho, até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocados ao seu redor.

Um forte abraço, muita saúde, sucesso e nos encontramos em breve.

Valeu.

Dica do Mês – Restrições de Integridade para Banco de Dados


Fala galera, bom dia.

Tudo bem?

Estou um pouco ausente neste mês devido as correrias da minha vida profissional e acadêmica, mas sempre que possível compartilhando com vocês um pouco do meu conhecimento e experiência.

O post de hoje poderia ser diferente dos outros, na sessão Dica do Mês vou apresentar um pouco mais sobre os conceitos básicos de banco de dados voltados para área de modelagem, estou me referindo as chamadas Restrições de Integridade (RI), algo bastante útil e importante quando estamos realizando as definições da estrutura lógica para armazenamento de dados em qualquer banco de dados. Então vamos começar a falar um pouco mais sobre este conceito também criado na década dos anos 70 por Edgar Frank Codd.


Falando um pouco sobre integridade…

A integridade de dados é uma das características essenciais da segurança da informação, e garante que as informações não sofreram alterações que não foram autorizadas ou que são impróprias. Utilizada para assegurar que um documento não é alterado depois de ter sido assinado.

Quando vamos projetar um banco de dados, imaginamos as possíveis formas para que nossa aplicação grave os dados corretamente no banco de dados, mas as vezes, esquecemos de definir, a nível de banco, quais as validações que devem ser feitas para evitar inconsistências nos dados e que, futuramente, se tornariam dores de cabeça.

No contexto de bancos de dados relacional é comum falar de integridade referencial, que tem como objetivo conservar as relações existentes entre tabelas quando algumas linhas são inseridas ou eliminadas.

Restrições de Integridade….

As chamadas RIs possuem o objetivo de garantir a exatidão e a consistência dos dados em uma Banco de dados relacional. Ou seja, garantir que dados representem assertivamente a realidade modelada. A integridade dos dados é tratada nas bases de dados através do conceito de integridade relacional e é garantida pelo próprio SGDB.

Existem vários tipos de restrições de integridade. Codd, inicialmente definiu 2 tipos de restrições, mas na sua segunda versão do modelo relacional ele definiu 5 tipos de restrições de integridade.

Mas antes de conhecer este tipos, vamos entender um pouco o conceito de domínio dos atributos: O domínio indica os possíveis valores de um atributo. A integridade de domínio verifica se os dados são do tipo permitido (alfanumerico, numerico,etc), tamanho do campo, se ele pode ser nulo ou não. Por exemplo, é possível definir que um atributo “idade” de um funcionário é sempre um valor inteiro positivo.

Os cinco tipos de restrições…

Restrição de Chave: Impede que uma chave primária se repita. Um campo chave primária diferencia de forma única os registros (linhas) de uma relação (tabela).

Restrição de Domínio: Impede que uma chave primária receba como valor NULL (nulo).

Integridade de vazio: Verifica se um campo pode ou não receber valor NULL. Sub-item da integridade de domínio.

Integridade referencial: Uma chave estrangeira de uma relação tem que coincidir com uma chave primária da sua tabela “pai” a que a chave estrangeira se refere. Ou seja, não só deve existir o atributo (campo), como também, o valor referenciado.

Integridade definida pelo usuário: Permite definir regras comerciais que não se encaixam em outras categorias de integridade.

Elementos que formam as Restrições de Integridade…

Integridade Semântica: Garante que o dado inserido em uma linha da tabela seja um valor válido. Para esse valor ser válido deve ser do mesmo tipo de dados definido na especificação da coluna na tabela.

Imagine o atributo de uma determinada entidade definido como DATA, por padrão este atributo deverá conter somente dados relativos a DATA. É justamente esta definição que nos permite ter a certeza que no campo DATA_CONTRATACAO só terá datas válidas.

Caso um SGDB permita a inserção de um outro tipo de dado diferente do definido, a integridade semântica será violada. A integridade semântica em um SGDB é aplicada com a utilização de constraints.

Constraints: Pode ser definido resumidamente como uma regra que limita o valor que pode ser inserido, modificado ou eliminado em uma tabela. Na linguagem SQL temos os seguintes tipos de constraints:

  • Constraint de dados;
  • Constraint NOT NULL (não nulo);
  • Constraint única; e
  • Constraint de validação (check constraint).

Constraints de Dados: Esse tipo de constraint pode ser considerado o mais simples e por muitas vezes ignorado como um constraint. Ele é o que delimita o tipo de dado de cada coluna em uma tabela.

Os tipos de informações disponíveis na maioria dos SGDBs existentes pode ser dividia em:

  • Numérico;
  • Alfanumérico ou caracteres;
  • Data e tempo; e
  • Grandes objetos.

Constraints Not Null: O conceito de nulo é utilizado quando uma determinada coluna ou atributo de uma linha na tabela não possui valor ou este valor é desconhecido. Por outro lado, existem colunas / atributo que obrigatoriamente precisam de valor informado.

Por exemplo, em uma tabela chamada FUNCIONARIO, onde estão dados de funcionários, o atributo NUMERO_FUNCIONARIO é obrigatório. Nesse caso é possível utilizar a constraint NOT NULL para garantir que haverá informação nessa coluna.

Importante frisar que NULO é diferente de brancos e zeros. Temos que lembrar também que tanto branco quanto zero são valores válidos e que são levados em conta em funções de coluna, tais como média, somatório, máximo, mínimo. Sendo que o NULO é desconsiderado nessas funções.

Constraints Única (Unique): Reconhecida e tratata como uma regra única que garante e não permite a existência de valores duplicados da mesma coluna ou em um conjunto de colunas na mesma tabela.

Usando o mesmo exemplo da tabela FUNCIONARIO, podemos utilizar uma constraint única na coluna NUMERO_FUNCIONARIO para garantir que dois ou mais funcionários possuam o mesmo número de identificação.

Podemos considerar que a chave primaria (primary key), que será explicada mais adiante, é um tipo de constraint única. Lembrando que uma tabela pode ter apenas uma chave primária, porém diversas constraint únicas.

Constraints de Validação (Check): Esta constraint determina um conjunto de valores permitidos para uma determinada coluna na tabela. Através deste tipo de constraints podemos definir de forma explícita através da linguagem DDL (Data Definition Language) de uma tabela com expressões Booleanas similares a clausula WHERE da linguagem Transact-SQL.

Uma constraint de validação é forçada em qualquer inserção ou atualização da coluna. Caso a inserção ou atualização da coluna não esteja de acordo com a definição da constraint, a mesma não será executada.

Por exemplo, vamos supor que a tabela FUNCIONARIO possua uma coluna SALARIO e que o valor do salário de cada funcionário não possa ser maior que 50.000,00, é possível criar uma constraint para erra regra:

CREATE TABLE FUNCIONARIO

(NUMERO_FUNCIONARIO SMALLINT NOT NULL,

SALARIO DECIMAL (9,2) NOT NULL CHECK SALARIO >= 50.000);

Observações: Uma constraint de validação pode ser muito útil para garantir regras de negócio, pois ela não pode ser sobreposta. Uma vez definida é dada a garantia que a regra será respeitada.

Utilizar esse tipo de integridade torna as suas aplicações mais robustas, consistentes e simples, pois não é necessário controlar as regras dentro do próprio código de programação ou utilizando uma subrotina. Dessa maneira é isolada em apenas um lugar a regra de negócio; e

Havendo a necessidade de mudar alguma regra de negócio, basta apenas alterar a constraint de validação na tabela ao invés de sair alterando códigos e mais códigos de programação uma vez que a mesma regra pode estar replicada em diversos pontos da sua aplicação.

Realizando uma prática…

Após conhecermos um pouco sobre o conceito e elementos que formam as restrições de integridade, vamos então colocar “a mão na massa” ou melhor como eu sempre digo no teclado e construir um simples exemplo de como podemos fazer uso de forma mais coerente e organizada do uso da restrição de integridade em nossas tabelas. Para tal utilizaremos o Bloco de Código 1 apresentado abaixo:

— Bloco de Código 1 — Aplicando o conceito de restrições de integridade —

— Criando o Banco de Dados —
Create Database RI
Go
— Acessando o Banco de Dados —
Use RI
Go
— Criando a Tabela Funcionarios utilizando Constrainst – Not Null, Null, Check, Default e Unique —
Create Table Funcionarios
(Codigo Int Primary Key Identity(1,1),
Nome Varchar(80) Not Null,
Sexo Char(1) Check (Sexo = ‘F’ or Sexo = ‘M’),
RG Int Not Null Unique NonClustered,
CPF Int Not Null Unique NonClustered,
DataNascimento Date Check (DataNascimento >= ‘1950-01-01’),
DataCadastro DateTime Default GetDate(),
Email Varchar(100) Null)
Go
— Criando a Tabela Clientes utilizando Constrainst – Not Null, Null, Check, Default e Unique —
Create Table Clientes
(Codigo Int Identity(1,1),
Nome Varchar(80) Not Null,
Sexo Char(1),
RG Int Not Null,
CPF Int Not Null,
DataNascimento Date,
 DataCadastro DateTime Constraint DF_Clientes_DataCadastro Default GetDate(),
Email Varchar(100) Null
  Constraint PK_Clientes_Codigo Primary Key (Codigo),
  Constraint CK_Clientes_Sexo Check (Sexo = ‘F’ or Sexo = ‘M’),
  Constraint UQ_Clientes_RG Unique NonClustered (RG),
  Constraint UQ_Clientes_CPF Unique NonClustered (CPF),
  Constraint CK_Clientes_DataNascimento Check (DataNascimento >= ‘1950-01-01’))
Go
— Adicionando uma nova Constraint —
Alter Table Clientes
Add Constraint DF_Clientes_Sexo Default ‘M’ for Sexo
Go
— Removendo uma Constraint já existente —
Alter Table Clientes
Drop Constraint CK_Clientes_DataNascimento
Go
— Adicionando uma nova Constraint do tipo Check —
Alter Table Clientes
Add Constraint CK_Clientes_DataNascimento
Check(DataNascimento >=’1900-01-01′)
Go

Perfeito, após executarmos este bloco de código temos nosso ambiente totalmente criado seguindo as definições de restrições de integridade que aplicamos no script.

Você pode estar se perguntando mas o que existe de diferença entre criar uma tabela sem definir o nome dados constraints em comparação com uma tabela que possui o nome das constraints definidas. A resposta para esta sua dúvida será respondida através da Figura 1 apresentada abaixo:

constraints
Figura 1 – Restrições de integridade criadas em cada tabela.

Analisando a Figura 1 podemos notar claramente a diferença, quando definimos um nome para nossas constrainst o Microsoft SQL Server atribui exatamente o nome de definimos no momento da crição da tabela, com isso, teremos mais facilidade para realizar uma manutenção nestes objetos, bem como, toda documentação e apresentação da estrutura do nosso banco de dados será mais limpa e organizada.


 

Sendo assim chegamos ao final de mais uma dica do mês.

O conhecimento técnico é muito importante para qualquer profissional, mas não podemos deixar de lado o conhecimento acadêmico adquirido ao longo dos anos dentro das instituições de ensino.

Este é um ponto fundamental, valorizar e conhecer a diferença entre um bom profissional e o profissional reconhecido e respeitado no mercado de trabalho, está justamente ligado na capacidade do mesmo em saber aliar o conhecimento teórico com o conhecimento prático, como muitos costumam dizer aliar a téoria a prática, sendo este o objetivo deste post.

Espero que você tenha gostado, que as informações e exemplos publicadas possam de alguma maneira ajudar e colaborar com suas atividades diárias, profissionais e ou acadêmicas.

Desejo um forte abraço, agradeço mais uma vez a sua visita.

Até mais.

Short Scripts – Julho – 2014


Boa Tarde Comunidade!

Esta chegando ao final mais uma Copa do Mundo, poxa vida passou rápido demais, mas foi óitmo. Mas a vida continua e se Deus permitir próximas Copas do Mundo virão e teremos mais sucesso e felicidades.

Desta forma, e mantendo a tradição vou compartilhar com vocês alguns do Short Scripts que utilizei nos últimos dias e me ajudarem muito.

Neste relação você vai encontrar exemplos e códigos que envolvem os seguintes recursos, comandos e funcionalidades:

  • Bloco Try…Catch;
  • Claúsula Output;
  • Comando Merge;
  • Constraints Default;
  • Função para Formatação de Valores;
  • Função Unpivot;
  • Script para Insert de Dados;
  • Stored Procedure;
  • Tipo de Dados UniqueIdentifier; e
  • XML com Versionamento e Enconding.

Segue abaixo os Short Scripts:

1– Exemplo – Stored Procedure + Comando Merge + Output:

— Criando a Tabela Producao —
Create Table Producao
(ControleProducao Int Identity(1,1) Primary Key,
OrdemProducao Varchar(20) Not Null,
DataProducao DateTime Not Null,
Quantidade Int Not Null)
On [Primary]
Go

— Criando a Stored Procedure P_FindProducao —
Create Procedure P_FindProducao @OrdemProducao VarChar(20), @DataProducao DateTime
As
Begin
Set NoCount On;

Merge Producao As Target
Using (Select @OrdemProducao, @DataProducao) As Source (OrdemProducao, DataProducao)
On (Target.OrdemProducao = Source.OrdemProducao
And Target.DataProducao = Source.DataProducao)
When Matched Then
Update Set Quantidade = Quantidade + 1, DataProducao = GetDate()
When Not Matched Then
Insert (OrdemProducao, DataProducao, Quantidade)
Values(Source.OrdemProducao, Source.DataProducao, 1)
OUTPUT deleted.*, $action, inserted.*;

End
Go

Select * from Producao

Insert Into Producao (OrdemProducao, DataProducao, Quantidade)
Values (1,GetDate(),1),
(2,GetDate(),1),
(3,GetDate(),1)
Exec P_FindProducao 1, ‘2014-07-08 10:06:50.297’

 

— Criando a Tabela Producao —
Create Table Producao
(OrdemProducao Varchar(20) Not Null Primary Key Clustered,
DataProducao DateTime Not Null,
Quantidade Int Not Null)
On [Primary]
Go

2 – Exemplo – Stored Procedure + Comando Merge + Output + Try….Catch:

— Criando a Stored Procedure P_FindProducao —
Create Procedure P_FindProducao @OrdemProducao VarChar(20), @DataProducao DateTime
As
Begin
Set NoCount On;

Begin Try

Merge Producao As Target
Using (Select @OrdemProducao, @DataProducao) As Source (OrdemProducao, DataProducao)
On (Target.OrdemProducao = Source.OrdemProducao
And Target.DataProducao = Source.DataProducao)
When Matched Then
Update Set Quantidade = Quantidade + 1, DataProducao = GetDate()
When Not Matched Then
Insert (OrdemProducao, DataProducao, Quantidade)
Values(Source.OrdemProducao, Source.DataProducao, 1);

End Try

Begin Catch

SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_MESSAGE() AS ErrorMessage,
ERROR_LINE() AS ErrorLine;

End Catch
End
Go

Select * from Producao

Insert Into Producao (OrdemProducao, DataProducao, Quantidade)
Values (1,GetDate(),1),
(2,GetDate(),1),
(3,GetDate(),1)
Exec P_FindProducao 3, ‘2014-07-08 10:26:25.250’

3 – Exemplo – Utilizando – UniqueIdentifier + Default +NewSequentialID:

Create TAble T1
(Codigo UniqueIdentifier Primary Key Default NEWSEQUENTIALID(),
Descricao varchar(100))
Insert into t1 (Descricao)
Values (CONVERT(Varchar(100), NewID()))
Go 10000

4 – Exemplo – Stored Procedure – Script de Insert:

if exists (select * from sysobjects where id = object_id(N'[dbo].[sp_CreateDataLoadScript]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1)
drop procedure [dbo].[sp_CreateDataLoadScript]
GO

Create Procedure sp_CreateDataLoadScript
@TblName varchar(128)
as
/*
exec sp_CreateDataLoadScript ‘MyTable’
*/
create table #a (id int identity (1,1), ColType int, ColName varchar(128))

insert #a (ColType, ColName)
select case when DATA_TYPE like ‘%char%’ then 1 else 0 end ,
COLUMN_NAME
from information_schema.columns
where TABLE_NAME = @TblName
order by ORDINAL_POSITION

if not exists (select * from #a)
begin
raiserror(‘No columns found for table %s’, 16,-1, @TblName)
return
end

declare @id int ,
@maxid int ,
@cmd1 varchar(7000) ,
@cmd2 varchar(7000)

select @id = 0 ,
@maxid = max(id)
from #a

select @cmd1 = ‘select ” insert ‘ + @TblName + ‘ ( ‘
select @cmd2 = ‘ + ” select ” + ‘
while @id < @maxid
begin
select @id = min(id) from #a where id > @id

select @cmd1 = @cmd1 + ColName + ‘,’
from #a
where id = @id

select @cmd2 = @cmd2
+ ‘ case when ‘ + ColName + ‘ is null ‘
+ ‘ then ”null” ‘
+ ‘ else ‘
+   case when ColType = 1 then  ””””’ + ‘ + ColName + ‘ + ””””’ else ‘convert(varchar(20),’ + ColName + ‘)’ end
+ ‘ end + ”,” + ‘
from #a
where id = @id
end
select @cmd1 = left(@cmd1,len(@cmd1)-1) + ‘ ) ” ‘
select @cmd2 = left(@cmd2,len(@cmd2)-8) + ‘ from ‘ + @tblName

select ‘/*’ + @cmd1 + @cmd2 + ‘*/’

exec (@cmd1 + @cmd2)
drop table #a

Go

5 – Exemplo – Criando – Função – Formatação de Valores:

CREATE FUNCTION FormataVT (@Valor float)
Returns varchar(30) as
Begin
Return Replace(Replace(Replace(Convert(Varchar, Convert(Money, @Valor), 1), ‘.’, ‘x’),
‘,’, ‘.’),
‘x’, ‘,’);
End;
Go
Declare @Valores Table (Valor_Total float);
INSERT into @Valores values (1032.5), (1542.24);

SELECT dbo.FormataVT(Valor_Total)  from @Valores;

6 – Exemplo – Gerando – XML com Version e Enconding:

DECLARE @xmlsample varchar(max),
@ArquivoXML Varchar(Max)

SET @xmlsample='<?xml version=“1.0” encoding=“UTF-8”?>’

Set @ArquivoXML= (Select CODIGO, Descricao from Produtos for XML Auto)

Select @xmlsample + Char(10) + @ArquivoXML

7 – Exemplo – Utilizando – UnPivot:

— Exemplo 1 —
CREATE TABLE dbo.CustomerPhones
(
CustomerID INT PRIMARY KEY, — FK
Phone1 VARCHAR(32),
Phone2 VARCHAR(32),
Phone3 VARCHAR(32)
);

INSERT dbo.CustomerPhones (CustomerID, Phone1, Phone2, Phone3)
VALUES (1,’705-491-1111′, ‘705-491-1110′, NULL),
(2,’613-492-2222′, NULL, NULL),
(3,’416-493-3333’, ‘416-493-3330’, ‘416-493-3339’);

— Forçando UnPivot sem utilizar o Operador UnPivot —
SELECT CustomerID, Phone = Phone1
FROM dbo.CustomerPhones WHERE Phone1 IS NOT NULL
UNION ALL
SELECT CustomerID, Phone = Phone2
FROM dbo.CustomerPhones WHERE Phone2 IS NOT NULL
UNION ALL
SELECT CustomerID, Phone = Phone3
FROM dbo.CustomerPhones WHERE Phone3 IS NOT NULL;

— Utilizando o Operador UnPivot —
SELECT CustomerID, Phone
FROM
(
SELECT CustomerID, Phone1, Phone2, Phone3
FROM dbo.CustomerPhones
) AS cp
UNPIVOT
(
Phone FOR Phones IN (Phone1, Phone2, Phone3)
) AS up;
— Exemplo 2 —
CREATE TABLE dbo.CustomerPhones2
(
CustomerID INT PRIMARY KEY, — FK
Phone1 VARCHAR(32),
PhoneType1 CHAR(4),
Phone2 VARCHAR(32),
PhoneType2 CHAR(4),
Phone3 VARCHAR(32),
PhoneType3 CHAR(4)
);

INSERT dbo.CustomerPhones2 VALUES
(1,’705-491-1111′, ‘cell’, ‘705-491-1110’, ‘home’, NULL,NULL),
(2,’613-492-2222′, ‘home’, NULL, NULL, NULL, NULL),
(3,’416-493-3333′, ‘work’, ‘416-493-3330’, ‘cell’,
‘416-493-3339’, ‘home’);

— Utilizando o Operador UnPivot —
SELECT CustomerID, Phone, PhoneType
FROM
(
SELECT CustomerID, Phone, PhoneType,
idp = SUBSTRING(Phones, LEN(Phones) – PATINDEX(‘%[^0-9]%’, REVERSE(Phones)) + 2, 32),
idpt = SUBSTRING(PhoneTypes, LEN(PhoneTypes) – PATINDEX(‘%[^0-9]%’, REVERSE(PhoneTypes)) + 2, 32)
FROM
(
SELECT CustomerID, Phone1, Phone2, Phone3,
PhoneType1, PhoneType2, PhoneType3
FROM dbo.CustomerPhones2
) AS cp
UNPIVOT
(
Phone FOR Phones IN (Phone1, Phone2, Phone3)
) AS p
UNPIVOT
(
PhoneType FOR PhoneTypes IN (PhoneType1, PhoneType2, PhoneType3)
) AS pt
) AS x
WHERE idp = idpt;

Pois bem pessoal, estes são os Short Scripts disponibilizados nesta relação, fique a vontade para compartilhar com seus contatos, amigos, DBAs, Profissionais de Banco de Dados, Amantes do SQL Server, Estudantes, enfim para todos.

Agradeço a sua visita, espero que este conteúdo possa te ajudar.

Um grande abraço e Viva a Argentina Futura Tri-Campeã Mundial de Futebol.