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.

Material de Apoio – Fevereiro 2019


Olá, muito bom dia….

Tudo bem? O mês de fevereiro já chegou, ainda não é carnaval no Brasil, mas para alegria e folia da garotada e de nós professores as aulas estão de volta (kkkkk).

Mesmo com toda esta loucura de volta as aulas, estou aqui mais uma vez procurando colaborar e compartilhar com a comunidade técnica em 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 primeiro post da sessão em 2019 e de número 161 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:

  • Check List Diário;
  • Concatenar valores ;
  • Criptografia de Código Fonte;
  • Descriptografia de Código Fonte;
  • Disponibilidade de Ambiente;
  • DMV sys.dm_exec_procedure_stats;
  • DMV sys.dm_exec_query_plan;
  • Formatação de Valores;
  • Função Format;
  • Função Parse;
  • Ordem Crescente de dados;
  • Ordem Descrecente de dados;
  • Plano de Execução;
  • Querys;
  • Stored Procedure;
  • Stored Procedure sp_fixeddrivers; e
  • Texto.

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 – Fevereiro 2019 – Relação das Querys mais pesadas em conjunto com plano de execução

2 – Material de Apoio – Fevereiro 2019 – Stored Procedure – CheckList Diário – Disponibilidade e Ambiente

3 – Material de Apoio – Fevereiro 2019 – Stored Procedure – sp_fixeddrives

4 – Material de Apoio – Fevereiro 2019 – Stored Procedure para Descriptografia de Stored Procedure

5 – Material de Apoio – Fevereiro 2019 – Stored Procedure – Exibir – Código Stored Procedure Criptografada

6 – Material de Apoio – Fevereiro 2019 – PARSE e FORMAT para alterar exibição de valores

7 – Material de Apoio – Fevereiro 2019 – Função – Formatação de Valores

8 – Material de Apoio – Fevereiro 2019 – Função – Concatenar valores em ordem decrescente

9 – Material de Apoio – Fevereiro 2019 – Função – Contar caracteres específicos dentro de um texto

10 – Material de Apoio – Fevereiro 2019 – Plano de Execução – Obtendo informações sobre Querys e Stored Procedures – sys.dm_exec_procedure_stats + sys.dm_exec_query_plan

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/

https://pedrogalvaojunior.wordpress.com/2018/04/05/material-de-apoio-abril-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 abril, 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.

Material de Apoio – Dezembro 2018


Olá, muito bom dia….

Tudo bem? Estamos no mês de dezembro, mês de festividades, e os brasileiros correndo nas ruas, shoppings, comércios em geral para escolher seus presentes e lembrança de Natal, como de costume e a cada ano parece que o tempo voa e não nos damos conta de o quanto nossas vidas tem se tornado um grande roda gigante, repleta de altos e baixos em todos os sentidos.

Como de costume, estou aqui mais uma vez procurando colaborar e compartilhar com a comunidade técnica em 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 quinto e último do ano de 2018 e de número 160 no total desta sessão.

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:

  • Alter Database;
  • Arquivos de Dados;
  • Colunas Dinâmicas;
  • Contagem de Caracteres;
  • Data e Hora;
  • DBCC ShowFileStats;
  • DBCC ShrinFile;
  • DBCC TraceStatus;
  • Espaço em Disco;
  • Espaço Ocupado em Disco;
  • Extents;
  • FileGroups;
  • Função Char();
  • Função FileProperty;
  • Função Len();
  • Função PadIndex();
  • Função Replace();
  • Função Revert();
  • Função SubString();
  • Operador Composto;
  • Operador Like;
  • Páginas de Dados;
  • Pivot;Strings; e
  • View sys.database_files.

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 – Dezembro – 2018 – Adicionando novos arquivos de dados.sql

2 – Material de Apoio – Dezembro – 2018 – Criando um Pivot com Colunas dinâmicas através da hora.sql

3 – Material de Apoio – Dezembro – 2018 – Invertendo a posição de palavras em uma linha.sql

4 – Material de Apoio – Dezembro – 2018 – Movendo páginas não alocadas, Truncando, Esvaziando e Removendo um arquivo de dados.sql

5 – Material de Apoio – Dezembro – 2018 – Utilizando operador Like em conjunto com Colchetes.sql

6 – Material de Apoio – Dezembro – 2018 – Utilizando operador composto.sql

7 – Material de Apoio – Dezembro – 2018 – Identificando o espaço ocupado e livre para arquivos de dados e log.sql

8 – Material de Apoio – Dezembro – 2018 – Simulando a contagem de um caracter específico dentro de uma string.sql

9 – Material de Apoio – Dezembro – 2018 – Dbcc ShowFileStats – Identificando o número de páginas alocados por extents de acordo com o filegroup.sql

10 – Material de Apoio – Dezembro – 2018 – DBCC TraceStatus – Validar as Trace Flags de inicialização habilitadas.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/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/

https://pedrogalvaojunior.wordpress.com/2018/04/05/material-de-apoio-abril-2018/

https://pedrogalvaojunior.wordpress.com/2018/02/13/material-de-apoio-fevereiro-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 fevereiro, 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 2019 (Ano Novo, vida nova e SQL Server 2019 pintando na área).

Valeu.

Microsoft abre inscrições para o maratona bots


A Microsoft abriu as inscrições para o Maratona Bots, um curso de capacitação online e gratuito destinado a programadores que querem aprender como criar chatbots, robôs que conversam via chat utilizando recursos de Inteligência Artificial.

O curso terá quatro semanas de duração e os conteúdos didáticos serão liberados semanalmente. O primeiro módulo estará disponível a partir de segunda-feira, dia 15 de janeiro.

Após o término das aulas, os participantes terão até o dia 26 de março para desenvolverem um bot atendendo aos critérios da organização do curso. Os projetos serão avaliados por um time de especialistas da Microsoft. O objetivo é fomentar a criatividade e o aprimoramento técnico dos participantes em serviços de Inteligência Artificial disponíveis na nuvem.

A maratona também fará uma breve introdução aos conceitos de machine learning e Inteligência Artificial, que podem auxiliar na construção de aplicativos de diferentes tipos. São conhecimentos que ajudam a formar um profissional capaz de fazer frente às demandas atuais das empresas interessadas em promover a transformação digital.

Microsoft abre inscrições para o Maratona Bots

O público-alvo principal do curso são os desenvolvedores de software. Profissionais de áreas relacionadas que tenham conhecimento básico de programação e desejam entender melhor a aplicabilidade da tecnologia nos negócios também podem participar.

Além das aulas de vídeo online, o curso terá materiais de apoio em formato PDF e laboratórios práticos. Durante o período de aulas, os participantes poderão tirar suas dúvidas com instrutores que estarão on-line. Depois do encerramento, o conteúdo das aulas continuará disponível na plataforma on-line.

Desenvolvedores e demais interessados podem se inscrever aqui.

Fontes e Direitos autorais: Microsoft News Center Brasil – 10/01/2018.

Material de Apoio – Agosto 2017


Boa tarde pessoal!

Salve, salve amantes de banco de dados, Tudo bem?

Este é mais um post da sessão Material de Apoio, sendo o terceiro no decorrer de 2017 e de número 153 no total desta sessão.

Já passamos da metade de 2017, que loucura isso, como a rotina do dia a dia não nos deixa perceber o quanto o tempo na para de correr. Falando justamente da correria da nossas vida, a relação de arquivos compartilhadas neste post poderá justamente lhe ajudar a economizar muito do seu tempo.

O post de hoje

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 hoje principalmente como Professor de Banco de Dados.

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

  • Cláusula Values;
  • Comando Distinct;
  • Comando Select;
  • Comando Top;
  • CTE Recursiva para geração de sequência de datas;
  • CTE Recursiva para geração de sequência numérica de CEPs;
  • Extended Events;
  • Função Format;
  • Função PARSE;
  • Funções de Ranking – Row_Number;
  • Monitoramento de senhas;
  • Operador Cross Apply;
  • Operador Outer Appy;
  • Recursos bloqueados;
  • SPDIDs de Conexões;
  • SPIDs de usuários; e
  • User Defined Function para cálculo de anos em colunas computadas.

Tenho a certeza que este conteúdo poderá lhe ajudar muito em seus atividades profissionais e acadêmicas, fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos.

Material de Apoio

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

 

 

 

 

 

 

 

 

 

Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .doc 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.

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:

Agradecimento

Quero agradecer imensamente a sua visita, espero lhe encontrar muitas vezes no decorrer deste ano em meu blog.

Não deixe de acessar os outros posts das demais sessões, e o próximo post desta sessão será publicado no mês de Novembro, até lá continue curtindo sua vida e compartilhando suas experiência.

Um forte abraço.

Dica do Mês – Utilizando a não documentada system view – SPT_Values


Buenas tardes….. Salve amantes de Banco de Dados!

Hoje terça – feira, estamos chegando ao final do mês de Fevereiro, estou aproveitando minhas férias no Flextronics Instituto de Tecnologia para descansar, renovar as minhas energias, cuidar dos meus filhos, esposas, enfim da minha vida, mas mantendo a minha missão e prazer em se aperfeiçoar cada vez mais em relação ao SQL Server e o mundo de Banco de Dados. Além disso, também tenho que manter vivo o meu blog, cuidando com carinho dos meus quase 2.000 seguidores, fazendo com eles não se sintam sozinhos ou desamparados(kkkkk).

Como eu destaquei no primeiro post desta sessão ao final de cada mês vou compartilhar com vocês uma pequena dica, levando-se em consideração os posts que sempre estou respondendo quase que diariamente nos Fóruns de SQL Server, como também, as dúvidas dos meus alunos, clientes e amigos de trabalho.

Seguindo este caminho uma das dúvidas que me chamou a atenção recentimente foi o questionamento que um aluno me fez referente a alguns recursos do Microsoft SQL Server que não estão documentados no Books On-Line, dentro eles a System View SPT_Values, isso mesmo se você nunca ouvi falar existem também alguns visões de sistemas presente no SQL Server não documentadas por parte da Microsoft.

Como costumo dizer para meus filhos, missão dada é missão cumprida! Neste caminho, lá vou eu, melhor dizendo lá eu fui….pela estrada a fora da internet pesquisando, consultando até encontrar mais informações para complementar o meu conhecimento em relação a esta system view, que sinceramente eu já tinha ouvido falar em meados de 2009, mas acredito que utilizei uma ou duas vezes sem saber exatamente como fazer uso.

Em algumas pesquisas na internet encontrei informações que indicam que esta visão de sistema é bastante antiga e esta presente no SQL Server desde as primeiras versões desenvolvidas inicialmente pela Sybase, conforme este link destaca: http://infocenter.sybase.com/archive/index.jsp?topic=/com.sybase.help.ase_15.0.sag1/html/sag1/sag126.htm

Particularmente eu já fiz isso desta visão, que possui algumas características interessantes:

  • Apresenta uma relação de 2523 linhas de registro que podem variar entre versões distintas do SQL Server;
  • Contem uma coluna denominada Number que armazena uma sequência de números de 0 até 2047;
  • Visão de sistema armazenada fisicamente no banco de dados Master; e
  • Considera como uma tabela auxiliar para geração de números ou cálculos matemáticos.

A Figura 1 apresentada abaixo ilustra a estrutura lógica da system view SPT_Values:

SystemView-SPT_Values
Figura 1 – Estrutura lógica da system view spt_valeus.

Dentre as principais formas de uso desta system view, algumas são bastante recorrentes e importantes para o profissionais de desenvolvimento:

  1. Análise de uma sequência de caracteres;
  2. Identificar falhas em sequências numéricas geradas através da proprieda Identity;
  3. Facilidade na geração de sequências de datas ou dados fictícios;
  4. Possibilidade de criação de ordenação e organização de dados de forma aleatória ou randômica.

Muito interessante todas estas possibilidades que este recurso tão escondido e presenta a anos pode oferecer e facilitar nossas vidas, desta forma, vou apresentar alguns exemplos de como podemos fazer uso desta system view.

 


Exemplos:

— 1 – Cálculando o fatorial de um número —

Declare @n int, @result float

Select @n = 4,@result=1

Select @result = @result * number From Master..spt_values

Where Type=‘p’ And Number Between 1 And @n

Select @result

Go

 

— 2 – Realizando a seperação de palavras —

DECLARE @var VARCHAR(100)

SET @var = ‘Conhecendo, cada, vez, mais, os segredos, do SQL Server…..’

SELECT

SUBSTRING (‘,’ + @var + ‘,’,Number + 1,CHARINDEX(‘,’,‘,’ + @var + ‘,’,Number + 1) Number 1) as value

FROM master..spt_values

WHERE Number >= 1

AND Number < LEN(‘,’ + @var + ‘,’) 1

AND SUBSTRING(‘,’ + @var + ‘,’, Number, 1) = ‘,’

AND type = ‘P’

ORDER BY Number

 

 Go

 

— 3 – Gerando um calendário mensal em tempo de execução, com base, no mês atual —

Select dateadd(month,datediff(month,0,getdate()),0) + number

from master..spt_values n with (nolock)

where number between 0 and day(dateadd(month,datediff(month,-1,getdate()),0) 1) 1 and type = ‘p’

Go

 

— 4 – Listando todas as horas de um dia, com base, na data atual —

Select dateadd(hour,number,dateadd(day,datediff(day,0,getdate()),0))

from master..spt_values n with (nolock)

where number between 0 and 23 and type = ‘p’

Go

 


 

 

Sensacional, quantas diversas possibilidades, maneiras e formas de utilização podem ser utilizadas com a system view SPT_Values, realmente fica complicado entender o porque a Microsoft não da suporte a documentação deste recurso, mas podemos pensar e considerar que por se tratar de recurso antigo oriundo da Sybase a Microsoft entenda que seja necessário recomendável elaborar uma documentação e ser adicionada ao Books On-Line. Mas vamos em frente, quem sabe no futuro isso possa mudar, pois existem muitas outras funcionalidades, comandos, stored procedures e recursos que a Microsoft também não esta documentando.

Deixando isso de lado, vou encerrar mais esta dica, espero e tenho a certeza que você gostou deste post, torço para que esta dica possa lhe trazer diversas possibilidades de utilizar este recurso, use sua imaginação e conhecimento com o SQL Server para encontrar outras maneiras de consumir e se aproveitar desta system view.

Mais uma vez obrigado, agradeço a sua visita, deixe sua crítica, sugestão, comentário e também contribua apresenta uma outra maneira que você já utilizou ou imagina que podemos utilizar a System Views SPT_Valeus.

Nos encontramos no próximos mês, com mais uma dica do mês.

Até lá.

Short Scripts – Janeiro – 2014


Bom dia, Comunidade….

Salve, Salve galera que gosta de Banco de Dados, mais especificamente o Microsoft SQL Server!!!!

Estamos começando mais um ano de muita expectativa com o possível lançamento do Microsoft SQL Server 2014, mas enquanto esta nova versão no chega, vamos trabalhando com as atuais versões.

Revirando o meu baú de Scripts, encontrei alguns códigos que a muitos anos eu utilizei e para falar a verdade nem se lembrava mais.

Pois bem, na relação de hoje você vai encontrar Short Scripts sobre:

  • Acessos de Usuários;
  • Conexões de Usuários;
  • Bloco de Códigos com Múltiplas CTEs;
  • Cálculo de dias úteis;
  • Cláusula values no Select;
  • Função PWDCompare;
  • Função PWDEncrypt;
  • Operador Neested Loop;
  • Operadore Merge Join; e
  • Trigger DDL.

Fique a vontade para copiar os códigos de exemplo, fazer suas alterações, propor melhorias ou mudanças, como também, suas sugestões e críticas.

Segue abaixo a relação de Short Scripts:

1 –  Exemplo – Básico – Multiplas – CTEs – Bloco de Código

;With CTE1 (Codigo, Descricao) As (Select Codigo, Descricao from Tabela1), CTE2 (Valor1, Valor2) As (Select Valor1, Valor2 From Tabela2)

Select T1.*, T2.* From Tabela1 T1, Tabela2 T2

2 – Exemplo – Básico – Trigger DDL – Criação e Exclusão Tabelas

CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT ‘You must disable Trigger “safety” to drop or alter tables!’
ROLLBACK ;

3 – Exemplo – Calcular Dias Úteis

Set DateFormat dmy

Declare @DiaFinal Int,            @ContarDias Int

Set @DiaFinal = (Select DatePart(Day,GetDate())) Set @ContarDias=0

Set Datefirst 1

While @DiaFinal >= (Select DatePart(Day,GetDate())) And @DiaFinal < 28  Begin   Set @ContarDias = @ContarDias + 1   Set @DiaFinal=(Select DatePart(Day,GetDate()+@ContarDias))  End

SELECT @@DATEFIRST AS ‘1st Day’,  DATEPART(dw,GetDate()+@ContarDias) AS ‘Today’, @ContarDias As “Total de Dias”

4 – Exemplo – Informações – Conexões e Acessos

— Quantidade de Conexões Simultâneas —

SELECT status,

client_net_address as [IP do cliente],

p.hostname as [Nome da máquina do cliente],

[text] as [Texto da consulta],

SPID,

DB_NAME(p.dbid) as [Nome do BD no qual foi executada a query],

p.[program_name] as [Programa solicitante]

FROM sys.dm_exec_connections c INNER JOIN sys.sysprocesses p

on c.session_id = p.spid

CROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle) AS ST

where STATUS IN (‘RUNNABLE’, ‘RUNNING’, ‘SUSPENDED’)

ORDER BY STATUS

— Quantidade de Conexões por banco de dados —

SELECT db_name(dbid) as Banco_de_Dados,

count(dbid) as Qtd_Conexoes

FROM sys.sysprocesses

WHERE dbid > 50

and db_name(dbid) = ‘smartgp’

GROUP BY dbid, loginame

5 – Exemplo – Relação de Usuário conectados

Select SPID As ‘Id’,
Loginame As ‘Usuário – SQL Server’,
HostName As ‘Computador’,
NT_Domain As ‘Domínio’,
NT_UserName As ‘Usuário – Domínio’
From Master..SysProcesses
Where Loginame <> ‘sa’
Order By Loginame

6 – Exemplo – Trabalhando com Operadores Neested Loop + Merge Join

— NESTED LOOP —
SELECT o.SalesOrderID, o.OrderDate, od.ProductID

FROM dbo.Orders o INNER JOIN dbo.OrderDetails od

ON o.SalesOrderID = od.SalesOrderID

WHERE o.SalesOrderID = 43659

— MERGE JOIN —
SELECT o.SalesOrderID, o.OrderDate, od.ProductID

FROM dbo.Orders o INNER JOIN dbo.OrderDetails od

ON o.SalesOrderID = od.SalesOrderID

WHERE o.SalesOrderID BETWEEN 43659 AND 44000

7 – Exemplo – Utilizando – Claúsula – Values no Select

Select * from (Values (‘Pedro’, 1),(‘FIT’, 2)) As Teste (About, Valor)

Select * from (Values (‘Valor’)) As Tabela (“Teste”)

8 – Exemplo – Utilizando a Função – PWDCompare e PWDEncrypt

— Inserindo a senha criptografada —

INSERT INTO Usuarios_novos VALUES (CONVERT(VARBINARY(255), PWDENCRYPT(‘Senha_Teste’)))

— Comparando a senha digitada com a senha criptografada —

SELECT PWDCOMPARE(‘Senha_Teste’,CONVERT(VARBINARY(255), PWDENCRYPT(‘Senha_Teste’)), 0) AS RESULTADO

Mais uma vez obrigado por sua visita, espero que esta material possa ser útil.

Nos encontramos na próxima Short Script.

Até mais.

Simulando – Desastre e Recuperação de Bancos de Dados – Microsoft SQL Server 2008 R2 e 2012 – Parte III.


Galera, bom dia.

Tudo bem?

Como prometido estou retornando com mais um post da série referente a Simulação de Desastre e Recuperação de Banco de Dados no Microsoft SQL Server 2008, R2 e 2012.

Neste post, vou destacar o uso do aplicativo Hex Editor Neo, utilizado especificamente para realizar o acesso, interpretação e leitura dos Arquivos de Dados que constitui qualquer de Banco de Dados no Microsoft SQL Server. Para saber mais sobre este editor acesse: http://www.hhdsoftware.com/

Você vai aprender e entender como podemos realizar manualmente a quebra de um banco de dados através da alteração da estrutura física e lógica da área alocação de dados no nível mais baixo,  chamada página de dados.

Figura1

Figura 1 – Estrutura do Banco de Dados MyDatabaseDesastre.

 

Ao criarmos uma tabela no Microsoft SQL Server, este objeto é alocado fisicamente em uma área de armazenamento chamada Partition (Partição, conceito que eu apresentei na primeira parte desta séria), organizado de forma lógica por pequenas unidades de armazenamento conhecidas como Allocation_Units.

 

Através das informações que podemos coletar com base na partição que o objeto esta vinculado, podemos encontrar as unidades de alocação em conseqüência identificar a primeira página de dados que este objeto está fisicamente ligado com a estrutura de armazenamento do banco de dados.

 

Para começarmos, vamos utilizar o Código 1 apresentado a seguir:

 

— Código 1 – Identificando as Partitions e Allocation_Units da Tabela Clientes –

 

SELECT P.partition_id,

 

OBJECT_NAME(P.object_id) As ObjectName,

 

U.allocation_unit_id,

 

SU.First_Page,

 

SU.Root_Page,

 

SU.First_IAM_Page

 

From Sys.Partitions As P INNER JOIN Sys.Allocation_Units As U

 

ON P.hobt_id = U.container_id

 

Inner Join Sys.system_internals_allocation_units SU

 

On u.allocation_unit_id = su.allocation_unit_id

 

Where  OBJECT_NAME(P.object_id)  = ‘Clientes’

 

 

 

Ao analisarmos este código, podemos notar que estamos fazendo uma junção entre as System Tables:

 

  • Sys.Partitions: Apresenta a relação de Partições existentes no Banco de Dados conectado.

 

 

 

  • Sys.Allocation_Units: Apresenta a relação de unidades de alocação existente no Banco de Dados conectado.

 

 

 

  • Sys.System_Internals_Allocation_Units: Apresenta a relação de unidades de alocação internas e de sistema existente no Banco de Dados conectado.

 

Dentre o conjunto de colunas retornadas pelo Código 1, devemos nos atentar para a coluna First_Page, é através do valor retornado por esta coluna que podemos identificar o número da página de dados em formato Hexadecimal, no meu exemplo o valor que obtive de retorno foi: 0x990000000100, conforme apresenta a Figura 2.

Figura2

 

Figura 2 – Retorno de dados após a execução do Código 1.

Outra possibilidade para identificar a página de dados de uma tabela é identificar os índices existentes para esta tabela, utilizando a System Table Sys.SysIndexes através da coluna First, conforme apresenta o Código 2 apresentada abaixo:

— Código 2 – Identificando a Página de Dados da Tabela Clientes com base em seus Índices –

SELECT First As ‘Área de Alocação’ FROM sys.sysindexes

Where Id = OBJECT_ID(‘Clientes’)

Podemos observar que teremos o mesmo valor 0x990000000100 retornado para a coluna First após executar o Código 2. Muito bem, já sabemos que o valor referente a página de dados da tabela Clientes é: 0x990000000100.

Acredito que alguns questionamentos após encontrarmos esta informação podem estar surgindo na sua cabeça, como por exemplo:

  1. 1.      O formato do número apresenta algum tipo de significado?

Sim, por padrão o valor retornado em hexadecimal apresenta alguns significados com base em seu conjunto de elementos, onde: 0x990000000100

  • Os quatro primeiros dígitos do valor indicam o número hexadecimal que representa a página de dados, neste caso: 0x99

 

  • Os últimos quatros dígitos identificam o número e arquivo de dados que compõem o banco, neste caso: 0100.

 

  • Os outros dígitos representam áreas de alocação internas utilizadas pelo Banco de Dados para armazenar os dados para esta tabela.

 

  1. 2.      Este valor realmente representa o número da primeira página de dados que a tabela clientes esta vinculada?

 

Na verdade para identificar qual realmente é o número de página de dados que a tabela esta vinculada devemos pegar os quatro primeiros dígitos e converter para um valor Inteiro.

 

O Código 3 apresenta como podemos converter o valor 0x990000000100, para um valor inteiro que representará o valor real da página de dados:

 

— Código 3 – Convertendo o valor Hexadecimal para encontrar a Página de Dados —

Declare @NumPagina Varbinary

 

SELECT @NumPagina=First  FROM Sys.Sysindexes

Where Id = OBJECT_ID(Clientes)

 

Select CONVERT(Int,@NumPagina)

Para o meu exemplo o valor retornado foi 153, sendo assim, o número da página de dados que a table clientes esta vinculada é 153.

 

  1. 3.      Existe algum comando especifico para trabalharmos com página de dados no Microsoft SQL Server?

 

Através do comando DBCC Page encontramos informações sobre ás páginas de dados, sendo este, comando DBCC não documento no Books On-Line.

 

  1. 4.      De que maneira os dados ficam armazenados em uma página de dados?

 

A partir do momento em que os dados são armazenados, os mesmos são distribuídos de forma seqüencial e organizada entre os conjuntos de OffSet existentes em cada página que esta armazenada fisicamente no arquivo de dados, neste caso, no arquivo .MDF. Utilizando o comando DBCC destacado anteriormente, teremos a possibilidade de visualizar os dados.

 

Legal, nosso próximo passo é chegarmos fisicamente até os dados que estão armazenados na página de dados 153, para isso vamos então utilizar o comando DBCC Page que poderá nos retornar os valores.

Por padrão o retorno apresentado por comandos DBCCs não é apresentado no SQL Server, sendo assim, temos que ativar a Trace Flag 3604 responsável em apresentar o retorno de dados para os comandos DBCC, conforme apresenta o Código 4:

— Código 4 – Ativando a Trace Flag 3604 para exibir o resultado do DBCC Page —
DBCC TRACEON(3604)

 

O próximo passo consiste em utilizar o comando DBCC Page para encontrarmos o conjunto de informações da nossa página, conforme apresenta o Código 5.

 

 

— Código 5 – Utilizando o DBCC Page + Número da Página de Dados —

DBCC PAGE (MyDatabaseDesastre, 1, 153, 2)

 

Basicamente este comando, será composto por quatro parâmetros, sendo eles:

  • Nome do Banco de Dados;
  • Número que identifica o arquivo de dados;
  • Número da página de dados;
  • Parâmetro para identificar o formato de retorno dos dados, sendo eles:

 

  • 0 – Exibir o Page Header da página de dados;
  • 1 – Exibir o Page Header com mais detalhes por linha com dumps hexadecimais e array de páginas;
  • 2 – Exibir o Page Header detalhado com todo dump em formato hexadecimal; e
  • 3 – Exibir o Page header mais detalhado para cada linha interpretada.

 

Note que após executar o Código 5, teremos o seguinte Memory Dump: @0x52AAC000

 

 

Memory Dump @0x52AAC000

 

52AAC000:   01010400 00820001 00000000 00000800 †…..‚……….

52AAC010:   00000000 00000d00 1b000000 bb1c6b03 †…………».k.

52AAC020:   99000000 01000000 55000000 10020000 †……..U…….

52AAC030:   01000000 89020000 00000000 aa7fb7d3 †….‰…….ª.·Ó

52AAC040:   00000000 00000000 00000000 00000000 †…………….

52AAC050:   00000000 00000000 00000000 00000000 †…………….

52AAC060:   3c000800 7d000000 03000002 001c0040 †<…}……….@

52AAC070:   00436c69 656e7465 20313235 436c6965 †.Cliente 125Clie

52AAC080:   6e746531 3235406d 79646174 61626173 †nte125@mydatabas

52AAC090:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AAC0A0:   30000800 b3dc0000 03000002 00160037 †0…³Ü………7

52AAC0B0:   00506564 726f5065 64726f47 616c7661 †.PedroPedroGalva

52AAC0C0:   6f404669 742d5465 636e6f6c 6f676961 †o@Fit-Tecnologia

52AAC0D0:   2e6f7267 2e627230 000800b4 dc000003 †.org.br0…´Ü…

52AAC0E0:   00000200 16003700 50656472 6f506564 †……7.PedroPed

52AAC0F0:   726f4761 6c76616f 40466974 2d546563 †roGalvao@Fit-Tec

52AAC100:   6e6f6c6f 6769612e 6f72672e 62723000 †nologia.org.br0.

52AAC110:   0800b5dc 00000300 00020016 00370050 †..µÜ………7.P

52AAC120:   6564726f 50656472 6f47616c 76616f40 †edroPedroGalvao@

52AAC130:   4669742d 5465636e 6f6c6f67 69612e6f †Fit-Tecnologia.o

52AAC140:   72672e62 72300008 00b6dc00 00030000 †rg.br0…¶Ü…..

52AAC150:   02001600 37005065 64726f50 6564726f †….7.PedroPedro

52AAC160:   47616c76 616f4046 69742d54 65636e6f †Galvao@Fit-Tecno

52AAC170:   6c6f6769 612e6f72 672e6272 30000800 †logia.org.br0…

52AAC180:   b7dc0000 03000002 00160037 00506564 †·Ü………7.Ped

52AAC190:   726f5065 64726f47 616c7661 6f404669 †roPedroGalvao@Fi

52AAC1A0:   742d5465 636e6f6c 6f676961 2e6f7267 †t-Tecnologia.org

52AAC1B0:   2e627230 000800b8 dc000003 00000200 †.br0…¸Ü…….

52AAC1C0:   16003700 50656472 6f506564 726f4761 †..7.PedroPedroGa

52AAC1D0:   6c76616f 40466974 2d546563 6e6f6c6f †lvao@Fit-Tecnolo

52AAC1E0:   6769612e 6f72672e 62723000 0800b9dc †gia.org.br0…¹Ü

52AAC1F0:   00000300 00020016 00370050 6564726f †………7.Pedro

52AAC200:   50656472 6f47616c 76616f40 4669742d †PedroGalvao@Fit-

52AAC210:   5465636e 6f6c6f67 69612e6f 72672e62 †Tecnologia.org.b

52AAC220:   72300008 00badc00 00030000 02001600 †r0…ºÜ………

52AAC230:   37005065 64726f50 6564726f 47616c76 †7.PedroPedroGalv

52AAC240:   616f4046 69742d54 65636e6f 6c6f6769 †ao@Fit-Tecnologi

52AAC250:   612e6f72 672e6272 30000800 bbdc0000 †a.org.br0…»Ü..

52AAC260:   03000002 00160037 00506564 726f5065 †…….7.PedroPe

52AAC270:   64726f47 616c7661 6f404669 742d5465 †droGalvao@Fit-Te

52AAC280:   636e6f6c 6f676961 2e6f7267 2e627230 †cnologia.org.br0

52AAC290:   000800bc dc000003 00000200 16003700 †…¼Ü………7.

52AAC2A0:   50656472 6f506564 726f4761 6c76616f †PedroPedroGalvao

52AAC2B0:   40466974 2d546563 6e6f6c6f 6769612e †@Fit-Tecnologia.

52AAC2C0:   6f72672e 62723000 0800bddc 00000300 †org.br0…½Ü….

52AAC2D0:   00020016 00370050 6564726f 50656472 †…..7.PedroPedr

52AAC2E0:   6f47616c 76616f40 4669742d 5465636e †oGalvao@Fit-Tecn

52AAC2F0:   6f6c6f67 69612e6f 72672e62 72300008 †ologia.org.br0..

52AAC300:   00bedc00 00030000 02001600 37005065 †.¾Ü………7.Pe

52AAC310:   64726f50 6564726f 47616c76 616f4046 †droPedroGalvao@F

52AAC320:   69742d54 65636e6f 6c6f6769 612e6f72 †it-Tecnologia.or

52AAC330:   672e6272 30000800 bfdc0000 03000002 †g.br0…¿Ü……

52AAC340:   00160037 00506564 726f5065 64726f47 †…7.PedroPedroG

52AAC350:   616c7661 6f404669 742d5465 636e6f6c †alvao@Fit-Tecnol

52AAC360:   6f676961 2e6f7267 2e627200 002e6564 †ogia.org.br…ed

52AAC370:   752e6272 3c000800 0e000000 03000002 †u.br<………..

52AAC380:   001b003e 00436c69 656e7465 20313443 †…>.Cliente 14C

52AAC390:   6c69656e 74653134 406d7964 61746162 †liente14@mydatab

52AAC3A0:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AAC3B0:   62723c00 08000f00 00000300 0002001b †br<………….

52AAC3C0:   003e0043 6c69656e 74652031 35436c69 †.>.Cliente 15Cli

52AAC3D0:   656e7465 3135406d 79646174 61626173 †ente15@mydatabas

52AAC3E0:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AAC3F0:   3c000800 10000000 03000002 001b003e †<…………..>

52AAC400:   00436c69 656e7465 20313643 6c69656e †.Cliente 16Clien

52AAC410:   74653136 406d7964 61746162 61736564 †te16@mydatabased

52AAC420:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AAC430:   08001100 00000300 0002001b 003e0043 †………….>.C

52AAC440:   6c69656e 74652031 37436c69 656e7465 †liente 17Cliente

52AAC450:   3137406d 79646174 61626173 65646573 †17@mydatabasedes

52AAC460:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AAC470:   12000000 03000002 001b003e 00436c69 †………..>.Cli

52AAC480:   656e7465 20313843 6c69656e 74653138 †ente 18Cliente18

52AAC490:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AAC4A0:   7472652e 6564752e 62723c00 08001300 †tre.edu.br<…..

52AAC4B0:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AAC4C0:   74652031 39436c69 656e7465 3139406d †te 19Cliente19@m

52AAC4D0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAC4E0:   652e6564 752e6272 3c000800 14000000 †e.edu.br<…….

52AAC4F0:   03000002 001b003e 00436c69 656e7465 †…….>.Cliente

52AAC500:   20323043 6c69656e 74653230 406d7964 † 20Cliente20@myd

52AAC510:   61746162 61736564 65736173 7472652e †atabasedesastre.

52AAC520:   6564752e 62723c00 08001500 00000300 †edu.br<………

52AAC530:   0002001b 003e0043 6c69656e 74652032 †…..>.Cliente 2

52AAC540:   31436c69 656e7465 3231406d 79646174 †1Cliente21@mydat

52AAC550:   61626173 65646573 61737472 652e6564 †abasedesastre.ed

52AAC560:   752e6272 3c000800 16000000 03000002 †u.br<………..

52AAC570:   001b003e 00436c69 656e7465 20323243 †…>.Cliente 22C

52AAC580:   6c69656e 74653232 406d7964 61746162 †liente22@mydatab

52AAC590:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AAC5A0:   62723c00 08001700 00000300 0002001b †br<………….

52AAC5B0:   003e0043 6c69656e 74652032 33436c69 †.>.Cliente 23Cli

52AAC5C0:   656e7465 3233406d 79646174 61626173 †ente23@mydatabas

52AAC5D0:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AAC5E0:   3c000800 18000000 03000002 001b003e †<…………..>

52AAC5F0:   00436c69 656e7465 20323443 6c69656e †.Cliente 24Clien

52AAC600:   74653234 406d7964 61746162 61736564 †te24@mydatabased

52AAC610:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AAC620:   08001900 00000300 0002001b 003e0043 †………….>.C

52AAC630:   6c69656e 74652032 35436c69 656e7465 †liente 25Cliente

52AAC640:   3235406d 79646174 61626173 65646573 †25@mydatabasedes

52AAC650:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AAC660:   1a000000 03000002 001b003e 00436c69 †………..>.Cli

52AAC670:   656e7465 20323643 6c69656e 74653236 †ente 26Cliente26

52AAC680:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AAC690:   7472652e 6564752e 62723c00 08001b00 †tre.edu.br<…..

52AAC6A0:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AAC6B0:   74652032 37436c69 656e7465 3237406d †te 27Cliente27@m

52AAC6C0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAC6D0:   652e6564 752e6272 3c000800 1c000000 †e.edu.br<…….

52AAC6E0:   03000002 001b003e 00436c69 656e7465 †…….>.Cliente

52AAC6F0:   20323843 6c69656e 74653238 406d7964 † 28Cliente28@myd

52AAC700:   61746162 61736564 65736173 7472652e †atabasedesastre.

52AAC710:   6564752e 62723c00 08001d00 00000300 †edu.br<………

52AAC720:   0002001b 003e0043 6c69656e 74652032 †…..>.Cliente 2

52AAC730:   39436c69 656e7465 3239406d 79646174 †9Cliente29@mydat

52AAC740:   61626173 65646573 61737472 652e6564 †abasedesastre.ed

52AAC750:   752e6272 3c000800 1e000000 03000002 †u.br<………..

52AAC760:   001b003e 00436c69 656e7465 20333043 †…>.Cliente 30C

52AAC770:   6c69656e 74653330 406d7964 61746162 †liente30@mydatab

52AAC780:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AAC790:   62723c00 08001f00 00000300 0002001b †br<………….

52AAC7A0:   003e0043 6c69656e 74652033 31436c69 †.>.Cliente 31Cli

52AAC7B0:   656e7465 3331406d 79646174 61626173 †ente31@mydatabas

52AAC7C0:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AAC7D0:   3c000800 20000000 03000002 001b003e †<… ……….>

52AAC7E0:   00436c69 656e7465 20333243 6c69656e †.Cliente 32Clien

52AAC7F0:   74653332 406d7964 61746162 61736564 †te32@mydatabased

52AAC800:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AAC810:   08002100 00000300 0002001b 003e0043 †..!……….>.C

52AAC820:   6c69656e 74652033 33436c69 656e7465 †liente 33Cliente

52AAC830:   3333406d 79646174 61626173 65646573 †33@mydatabasedes

52AAC840:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AAC850:   22000000 03000002 001b003e 00436c69 †”……….>.Cli

52AAC860:   656e7465 20333443 6c69656e 74653334 †ente 34Cliente34

52AAC870:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AAC880:   7472652e 6564752e 62723c00 08002300 †tre.edu.br<…#.

52AAC890:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AAC8A0:   74652033 35436c69 656e7465 3335406d †te 35Cliente35@m

52AAC8B0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAC8C0:   652e6564 752e6272 3c000800 24000000 †e.edu.br<…$…

52AAC8D0:   03000002 001b003e 00436c69 656e7465 †…….>.Cliente

52AAC8E0:   20333643 6c69656e 74653336 406d7964 † 36Cliente36@myd

52AAC8F0:   61746162 61736564 65736173 7472652e †atabasedesastre.

52AAC900:   6564752e 62723c00 08002500 00000300 †edu.br<…%…..

52AAC910:   0002001b 003e0043 6c69656e 74652033 †…..>.Cliente 3

52AAC920:   37436c69 656e7465 3337406d 79646174 †7Cliente37@mydat

52AAC930:   61626173 65646573 61737472 652e6564 †abasedesastre.ed

52AAC940:   752e6272 3c000800 26000000 03000002 †u.br<…&…….

52AAC950:   001b003e 00436c69 656e7465 20333843 †…>.Cliente 38C

52AAC960:   6c69656e 74653338 406d7964 61746162 †liente38@mydatab

52AAC970:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AAC980:   62723c00 08002700 00000300 0002001b †br<…’………

52AAC990:   003e0043 6c69656e 74652033 39436c69 †.>.Cliente 39Cli

52AAC9A0:   656e7465 3339406d 79646174 61626173 †ente39@mydatabas

52AAC9B0:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AAC9C0:   3c000800 28000000 03000002 001b003e †<…(……….>

52AAC9D0:   00436c69 656e7465 20343043 6c69656e †.Cliente 40Clien

52AAC9E0:   74653430 406d7964 61746162 61736564 †te40@mydatabased

52AAC9F0:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AACA00:   08002900 00000300 0002001b 003e0043 †..)……….>.C

52AACA10:   6c69656e 74652034 31436c69 656e7465 †liente 41Cliente

52AACA20:   3431406d 79646174 61626173 65646573 †41@mydatabasedes

52AACA30:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AACA40:   2a000000 03000002 001b003e 00436c69 †*……….>.Cli

52AACA50:   656e7465 20343243 6c69656e 74653432 †ente 42Cliente42

52AACA60:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AACA70:   7472652e 6564752e 62723c00 08002b00 †tre.edu.br<…+.

52AACA80:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AACA90:   74652034 33436c69 656e7465 3433406d †te 43Cliente43@m

52AACAA0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AACAB0:   652e6564 752e6272 3c000800 2c000000 †e.edu.br<…,…

52AACAC0:   03000002 001b003e 00436c69 656e7465 †…….>.Cliente

52AACAD0:   20343443 6c69656e 74653434 406d7964 † 44Cliente44@myd

52AACAE0:   61746162 61736564 65736173 7472652e †atabasedesastre.

52AACAF0:   6564752e 62723c00 08002d00 00000300 †edu.br<…-…..

52AACB00:   0002001b 003e0043 6c69656e 74652034 †…..>.Cliente 4

52AACB10:   35436c69 656e7465 3435406d 79646174 †5Cliente45@mydat

52AACB20:   61626173 65646573 61737472 652e6564 †abasedesastre.ed

52AACB30:   752e6272 3c000800 2e000000 03000002 †u.br<………..

52AACB40:   001b003e 00436c69 656e7465 20343643 †…>.Cliente 46C

52AACB50:   6c69656e 74653436 406d7964 61746162 †liente46@mydatab

52AACB60:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AACB70:   62723c00 08002f00 00000300 0002001b †br<…/………

52AACB80:   003e0043 6c69656e 74652034 37436c69 †.>.Cliente 47Cli

52AACB90:   656e7465 3437406d 79646174 61626173 †ente47@mydatabas

52AACBA0:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AACBB0:   3c000800 30000000 03000002 001b003e †<…0……….>

52AACBC0:   00436c69 656e7465 20343843 6c69656e †.Cliente 48Clien

52AACBD0:   74653438 406d7964 61746162 61736564 †te48@mydatabased

52AACBE0:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AACBF0:   08003100 00000300 0002001b 003e0043 †..1……….>.C

52AACC00:   6c69656e 74652034 39436c69 656e7465 †liente 49Cliente

52AACC10:   3439406d 79646174 61626173 65646573 †49@mydatabasedes

52AACC20:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AACC30:   32000000 03000002 001b003e 00436c69 †2……….>.Cli

52AACC40:   656e7465 20353043 6c69656e 74653530 †ente 50Cliente50

52AACC50:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AACC60:   7472652e 6564752e 62723c00 08003300 †tre.edu.br<…3.

52AACC70:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AACC80:   74652035 31436c69 656e7465 3531406d †te 51Cliente51@m

52AACC90:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AACCA0:   652e6564 752e6272 3c000800 34000000 †e.edu.br<…4…

52AACCB0:   03000002 001b003e 00436c69 656e7465 †…….>.Cliente

52AACCC0:   20353243 6c69656e 74653532 406d7964 † 52Cliente52@myd

52AACCD0:   61746162 61736564 65736173 7472652e †atabasedesastre.

52AACCE0:   6564752e 62723c00 08003500 00000300 †edu.br<…5…..

52AACCF0:   0002001b 003e0043 6c69656e 74652035 †…..>.Cliente 5

52AACD00:   33436c69 656e7465 3533406d 79646174 †3Cliente53@mydat

52AACD10:   61626173 65646573 61737472 652e6564 †abasedesastre.ed

52AACD20:   752e6272 3c000800 36000000 03000002 †u.br<…6…….

52AACD30:   001b003e 00436c69 656e7465 20353443 †…>.Cliente 54C

52AACD40:   6c69656e 74653534 406d7964 61746162 †liente54@mydatab

52AACD50:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AACD60:   62723c00 08003700 00000300 0002001b †br<…7………

52AACD70:   003e0043 6c69656e 74652035 35436c69 †.>.Cliente 55Cli

52AACD80:   656e7465 3535406d 79646174 61626173 †ente55@mydatabas

52AACD90:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AACDA0:   3c000800 38000000 03000002 001b003e †<…8……….>

52AACDB0:   00436c69 656e7465 20353643 6c69656e †.Cliente 56Clien

52AACDC0:   74653536 406d7964 61746162 61736564 †te56@mydatabased

52AACDD0:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AACDE0:   08003900 00000300 0002001b 003e0043 †..9……….>.C

52AACDF0:   6c69656e 74652035 37436c69 656e7465 †liente 57Cliente

52AACE00:   3537406d 79646174 61626173 65646573 †57@mydatabasedes

52AACE10:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AACE20:   3a000000 03000002 001b003e 00436c69 †:……….>.Cli

52AACE30:   656e7465 20353843 6c69656e 74653538 †ente 58Cliente58

52AACE40:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AACE50:   7472652e 6564752e 62723c00 08003b00 †tre.edu.br<…;.

52AACE60:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AACE70:   74652035 39436c69 656e7465 3539406d †te 59Cliente59@m

52AACE80:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AACE90:   652e6564 752e6272 3c000800 3c000000 †e.edu.br<…<…

52AACEA0:   03000002 001b003e 00436c69 656e7465 †…….>.Cliente

52AACEB0:   20363043 6c69656e 74653630 406d7964 † 60Cliente60@myd

52AACEC0:   61746162 61736564 65736173 7472652e †atabasedesastre.

52AACED0:   6564752e 62723c00 08003d00 00000300 †edu.br<…=…..

52AACEE0:   0002001b 003e0043 6c69656e 74652036 †…..>.Cliente 6

52AACEF0:   31436c69 656e7465 3631406d 79646174 †1Cliente61@mydat

52AACF00:   61626173 65646573 61737472 652e6564 †abasedesastre.ed

52AACF10:   752e6272 3c000800 3e000000 03000002 †u.br<…>…….

52AACF20:   001b003e 00436c69 656e7465 20363243 †…>.Cliente 62C

52AACF30:   6c69656e 74653632 406d7964 61746162 †liente62@mydatab

52AACF40:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AACF50:   62723c00 08003f00 00000300 0002001b †br<…?………

52AACF60:   003e0043 6c69656e 74652036 33436c69 †.>.Cliente 63Cli

52AACF70:   656e7465 3633406d 79646174 61626173 †ente63@mydatabas

52AACF80:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AACF90:   3c000800 40000000 03000002 001b003e †<…@……….>

52AACFA0:   00436c69 656e7465 20363443 6c69656e †.Cliente 64Clien

52AACFB0:   74653634 406d7964 61746162 61736564 †te64@mydatabased

52AACFC0:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AACFD0:   08004100 00000300 0002001b 003e0043 †..A……….>.C

52AACFE0:   6c69656e 74652036 35436c69 656e7465 †liente 65Cliente

52AACFF0:   3635406d 79646174 61626173 65646573 †65@mydatabasedes

52AAD000:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AAD010:   42000000 03000002 001b003e 00436c69 †B……….>.Cli

52AAD020:   656e7465 20363643 6c69656e 74653636 †ente 66Cliente66

52AAD030:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AAD040:   7472652e 6564752e 62723c00 08004300 †tre.edu.br<…C.

52AAD050:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AAD060:   74652036 37436c69 656e7465 3637406d †te 67Cliente67@m

52AAD070:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD080:   652e6564 752e6272 3c000800 44000000 †e.edu.br<…D…

52AAD090:   03000002 001b003e 00436c69 656e7465 †…….>.Cliente

52AAD0A0:   20363843 6c69656e 74653638 406d7964 † 68Cliente68@myd

52AAD0B0:   61746162 61736564 65736173 7472652e †atabasedesastre.

52AAD0C0:   6564752e 62723c00 08004500 00000300 †edu.br<…E…..

52AAD0D0:   0002001b 003e0043 6c69656e 74652036 †…..>.Cliente 6

52AAD0E0:   39436c69 656e7465 3639406d 79646174 †9Cliente69@mydat

52AAD0F0:   61626173 65646573 61737472 652e6564 †abasedesastre.ed

52AAD100:   752e6272 3c000800 46000000 03000002 †u.br<…F…….

52AAD110:   001b003e 00436c69 656e7465 20373043 †…>.Cliente 70C

52AAD120:   6c69656e 74653730 406d7964 61746162 †liente70@mydatab

52AAD130:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AAD140:   62723c00 08004700 00000300 0002001b †br<…G………

52AAD150:   003e0043 6c69656e 74652037 31436c69 †.>.Cliente 71Cli

52AAD160:   656e7465 3731406d 79646174 61626173 †ente71@mydatabas

52AAD170:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AAD180:   3c000800 48000000 03000002 001b003e †<…H……….>

52AAD190:   00436c69 656e7465 20373243 6c69656e †.Cliente 72Clien

52AAD1A0:   74653732 406d7964 61746162 61736564 †te72@mydatabased

52AAD1B0:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AAD1C0:   08004900 00000300 0002001b 003e0043 †..I……….>.C

52AAD1D0:   6c69656e 74652037 33436c69 656e7465 †liente 73Cliente

52AAD1E0:   3733406d 79646174 61626173 65646573 †73@mydatabasedes

52AAD1F0:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AAD200:   4a000000 03000002 001b003e 00436c69 †J……….>.Cli

52AAD210:   656e7465 20373443 6c69656e 74653734 †ente 74Cliente74

52AAD220:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AAD230:   7472652e 6564752e 62723c00 08004b00 †tre.edu.br<…K.

52AAD240:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AAD250:   74652037 35436c69 656e7465 3735406d †te 75Cliente75@m

52AAD260:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD270:   652e6564 752e6272 3c000800 4c000000 †e.edu.br<…L…

52AAD280:   03000002 001b003e 00436c69 656e7465 †…….>.Cliente

52AAD290:   20373643 6c69656e 74653736 406d7964 † 76Cliente76@myd

52AAD2A0:   61746162 61736564 65736173 7472652e †atabasedesastre.

52AAD2B0:   6564752e 62723c00 08004d00 00000300 †edu.br<…M…..

52AAD2C0:   0002001b 003e0043 6c69656e 74652037 †…..>.Cliente 7

52AAD2D0:   37436c69 656e7465 3737406d 79646174 †7Cliente77@mydat

52AAD2E0:   61626173 65646573 61737472 652e6564 †abasedesastre.ed

52AAD2F0:   752e6272 3c000800 4e000000 03000002 †u.br<…N…….

52AAD300:   001b003e 00436c69 656e7465 20373843 †…>.Cliente 78C

52AAD310:   6c69656e 74653738 406d7964 61746162 †liente78@mydatab

52AAD320:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AAD330:   62723c00 08004f00 00000300 0002001b †br<…O………

52AAD340:   003e0043 6c69656e 74652037 39436c69 †.>.Cliente 79Cli

52AAD350:   656e7465 3739406d 79646174 61626173 †ente79@mydatabas

52AAD360:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AAD370:   3c000800 50000000 03000002 001b003e †<…P……….>

52AAD380:   00436c69 656e7465 20383043 6c69656e †.Cliente 80Clien

52AAD390:   74653830 406d7964 61746162 61736564 †te80@mydatabased

52AAD3A0:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AAD3B0:   08005100 00000300 0002001b 003e0043 †..Q……….>.C

52AAD3C0:   6c69656e 74652038 31436c69 656e7465 †liente 81Cliente

52AAD3D0:   3831406d 79646174 61626173 65646573 †81@mydatabasedes

52AAD3E0:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AAD3F0:   52000000 03000002 001b003e 00436c69 †R……….>.Cli

52AAD400:   656e7465 20383243 6c69656e 74653832 †ente 82Cliente82

52AAD410:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AAD420:   7472652e 6564752e 62723c00 08005300 †tre.edu.br<…S.

52AAD430:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AAD440:   74652038 33436c69 656e7465 3833406d †te 83Cliente83@m

52AAD450:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD460:   652e6564 752e6272 3c000800 54000000 †e.edu.br<…T…

52AAD470:   03000002 001b003e 00436c69 656e7465 †…….>.Cliente

52AAD480:   20383443 6c69656e 74653834 406d7964 † 84Cliente84@myd

52AAD490:   61746162 61736564 65736173 7472652e †atabasedesastre.

52AAD4A0:   6564752e 62723c00 08005500 00000300 †edu.br<…U…..

52AAD4B0:   0002001b 003e0043 6c69656e 74652038 †…..>.Cliente 8

52AAD4C0:   35436c69 656e7465 3835406d 79646174 †5Cliente85@mydat

52AAD4D0:   61626173 65646573 61737472 652e6564 †abasedesastre.ed

52AAD4E0:   752e6272 3c000800 56000000 03000002 †u.br<…V…….

52AAD4F0:   001b003e 00436c69 656e7465 20383643 †…>.Cliente 86C

52AAD500:   6c69656e 74653836 406d7964 61746162 †liente86@mydatab

52AAD510:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AAD520:   62723c00 08005700 00000300 0002001b †br<…W………

52AAD530:   003e0043 6c69656e 74652038 37436c69 †.>.Cliente 87Cli

52AAD540:   656e7465 3837406d 79646174 61626173 †ente87@mydatabas

52AAD550:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AAD560:   3c000800 58000000 03000002 001b003e †<…X……….>

52AAD570:   00436c69 656e7465 20383843 6c69656e †.Cliente 88Clien

52AAD580:   74653838 406d7964 61746162 61736564 †te88@mydatabased

52AAD590:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AAD5A0:   08005900 00000300 0002001b 003e0043 †..Y……….>.C

52AAD5B0:   6c69656e 74652038 39436c69 656e7465 †liente 89Cliente

52AAD5C0:   3839406d 79646174 61626173 65646573 †89@mydatabasedes

52AAD5D0:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AAD5E0:   5a000000 03000002 001b003e 00436c69 †Z……….>.Cli

52AAD5F0:   656e7465 20393043 6c69656e 74653930 †ente 90Cliente90

52AAD600:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AAD610:   7472652e 6564752e 62723c00 08005b00 †tre.edu.br<…[.

52AAD620:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AAD630:   74652039 31436c69 656e7465 3931406d †te 91Cliente91@m

52AAD640:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD650:   652e6564 752e6272 3c000800 5c000000 †e.edu.br<…\…

52AAD660:   03000002 001b003e 00436c69 656e7465 †…….>.Cliente

52AAD670:   20393243 6c69656e 74653932 406d7964 † 92Cliente92@myd

52AAD680:   61746162 61736564 65736173 7472652e †atabasedesastre.

52AAD690:   6564752e 62723c00 08005d00 00000300 †edu.br<…]…..

52AAD6A0:   0002001b 003e0043 6c69656e 74652039 †…..>.Cliente 9

52AAD6B0:   33436c69 656e7465 3933406d 79646174 †3Cliente93@mydat

52AAD6C0:   61626173 65646573 61737472 652e6564 †abasedesastre.ed

52AAD6D0:   752e6272 3c000800 5e000000 03000002 †u.br<…^…….

52AAD6E0:   001b003e 00436c69 656e7465 20393443 †…>.Cliente 94C

52AAD6F0:   6c69656e 74653934 406d7964 61746162 †liente94@mydatab

52AAD700:   61736564 65736173 7472652e 6564752e †asedesastre.edu.

52AAD710:   62723c00 08005f00 00000300 0002001b †br<…_………

52AAD720:   003e0043 6c69656e 74652039 35436c69 †.>.Cliente 95Cli

52AAD730:   656e7465 3935406d 79646174 61626173 †ente95@mydatabas

52AAD740:   65646573 61737472 652e6564 752e6272 †edesastre.edu.br

52AAD750:   3c000800 60000000 03000002 001b003e †<…`……….>

52AAD760:   00436c69 656e7465 20393643 6c69656e †.Cliente 96Clien

52AAD770:   74653936 406d7964 61746162 61736564 †te96@mydatabased

52AAD780:   65736173 7472652e 6564752e 62723c00 †esastre.edu.br<.

52AAD790:   08006100 00000300 0002001b 003e0043 †..a……….>.C

52AAD7A0:   6c69656e 74652039 37436c69 656e7465 †liente 97Cliente

52AAD7B0:   3937406d 79646174 61626173 65646573 †97@mydatabasedes

52AAD7C0:   61737472 652e6564 752e6272 3c000800 †astre.edu.br<…

52AAD7D0:   62000000 03000002 001b003e 00436c69 †b……….>.Cli

52AAD7E0:   656e7465 20393843 6c69656e 74653938 †ente 98Cliente98

52AAD7F0:   406d7964 61746162 61736564 65736173 †@mydatabasedesas

52AAD800:   7472652e 6564752e 62723c00 08006300 †tre.edu.br<…c.

52AAD810:   00000300 0002001b 003e0043 6c69656e †………>.Clien

52AAD820:   74652039 39436c69 656e7465 3939406d †te 99Cliente99@m

52AAD830:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD840:   652e6564 752e6272 3c000800 64000000 †e.edu.br<…d…

52AAD850:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AAD860:   20313030 436c6965 6e746531 3030406d † 100Cliente100@m

52AAD870:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD880:   652e6564 752e6272 3c000800 65000000 †e.edu.br<…e…

52AAD890:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AAD8A0:   20313031 436c6965 6e746531 3031406d † 101Cliente101@m

52AAD8B0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD8C0:   652e6564 752e6272 3c000800 66000000 †e.edu.br<…f…

52AAD8D0:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AAD8E0:   20313032 436c6965 6e746531 3032406d † 102Cliente102@m

52AAD8F0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD900:   652e6564 752e6272 3c000800 67000000 †e.edu.br<…g…

52AAD910:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AAD920:   20313033 436c6965 6e746531 3033406d † 103Cliente103@m

52AAD930:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD940:   652e6564 752e6272 3c000800 68000000 †e.edu.br<…h…

52AAD950:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AAD960:   20313034 436c6965 6e746531 3034406d † 104Cliente104@m

52AAD970:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD980:   652e6564 752e6272 3c000800 69000000 †e.edu.br<…i…

52AAD990:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AAD9A0:   20313035 436c6965 6e746531 3035406d † 105Cliente105@m

52AAD9B0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AAD9C0:   652e6564 752e6272 3c000800 6a000000 †e.edu.br<…j…

52AAD9D0:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AAD9E0:   20313036 436c6965 6e746531 3036406d † 106Cliente106@m

52AAD9F0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADA00:   652e6564 752e6272 3c000800 6b000000 †e.edu.br<…k…

52AADA10:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADA20:   20313037 436c6965 6e746531 3037406d † 107Cliente107@m

52AADA30:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADA40:   652e6564 752e6272 3c000800 6c000000 †e.edu.br<…l…

52AADA50:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADA60:   20313038 436c6965 6e746531 3038406d † 108Cliente108@m

52AADA70:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADA80:   652e6564 752e6272 3c000800 6d000000 †e.edu.br<…m…

52AADA90:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADAA0:   20313039 436c6965 6e746531 3039406d † 109Cliente109@m

52AADAB0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADAC0:   652e6564 752e6272 3c000800 6e000000 †e.edu.br<…n…

52AADAD0:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADAE0:   20313130 436c6965 6e746531 3130406d † 110Cliente110@m

52AADAF0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADB00:   652e6564 752e6272 3c000800 6f000000 †e.edu.br<…o…

52AADB10:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADB20:   20313131 436c6965 6e746531 3131406d † 111Cliente111@m

52AADB30:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADB40:   652e6564 752e6272 3c000800 70000000 †e.edu.br<…p…

52AADB50:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADB60:   20313132 436c6965 6e746531 3132406d † 112Cliente112@m

52AADB70:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADB80:   652e6564 752e6272 3c000800 71000000 †e.edu.br<…q…

52AADB90:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADBA0:   20313133 436c6965 6e746531 3133406d † 113Cliente113@m

52AADBB0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADBC0:   652e6564 752e6272 3c000800 72000000 †e.edu.br<…r…

52AADBD0:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADBE0:   20313134 436c6965 6e746531 3134406d † 114Cliente114@m

52AADBF0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADC00:   652e6564 752e6272 3c000800 73000000 †e.edu.br<…s…

52AADC10:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADC20:   20313135 436c6965 6e746531 3135406d † 115Cliente115@m

52AADC30:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADC40:   652e6564 752e6272 3c000800 74000000 †e.edu.br<…t…

52AADC50:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADC60:   20313136 436c6965 6e746531 3136406d † 116Cliente116@m

52AADC70:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADC80:   652e6564 752e6272 3c000800 75000000 †e.edu.br<…u…

52AADC90:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADCA0:   20313137 436c6965 6e746531 3137406d † 117Cliente117@m

52AADCB0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADCC0:   652e6564 752e6272 3c000800 76000000 †e.edu.br<…v…

52AADCD0:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADCE0:   20313138 436c6965 6e746531 3138406d † 118Cliente118@m

52AADCF0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADD00:   652e6564 752e6272 3c000800 77000000 †e.edu.br<…w…

52AADD10:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADD20:   20313139 436c6965 6e746531 3139406d † 119Cliente119@m

52AADD30:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADD40:   652e6564 752e6272 3c000800 78000000 †e.edu.br<…x…

52AADD50:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADD60:   20313230 436c6965 6e746531 3230406d † 120Cliente120@m

52AADD70:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADD80:   652e6564 752e6272 3c000800 79000000 †e.edu.br<…y…

52AADD90:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADDA0:   20313231 436c6965 6e746531 3231406d † 121Cliente121@m

52AADDB0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADDC0:   652e6564 752e6272 3c000800 7a000000 †e.edu.br<…z…

52AADDD0:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADDE0:   20313232 436c6965 6e746531 3232406d † 122Cliente122@m

52AADDF0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADE00:   652e6564 752e6272 3c000800 7b000000 †e.edu.br<…{…

52AADE10:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADE20:   20313233 436c6965 6e746531 3233406d † 123Cliente123@m

52AADE30:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADE40:   652e6564 752e6272 3c000800 7c000000 †e.edu.br<…|…

52AADE50:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADE60:   20313234 436c6965 6e746531 3234406d † 124Cliente124@m

52AADE70:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADE80:   652e6564 752e6272 3c000800 7d000000 †e.edu.br<…}…

52AADE90:   03000002 001c0040 00436c69 656e7465 †…….@.Cliente

52AADEA0:   20313235 436c6965 6e746531 3235406d † 125Cliente125@m

52AADEB0:   79646174 61626173 65646573 61737472 †ydatabasedesastr

52AADEC0:   652e6564 752e6272 30000800 b3dc0000 †e.edu.br0…³Ü..

52AADED0:   03000002 00160037 00506564 726f5065 †…….7.PedroPe

52AADEE0:   64726f47 616c7661 6f404669 742d5465 †droGalvao@Fit-Te

52AADEF0:   636e6f6c 6f676961 2e6f7267 2e627230 †cnologia.org.br0

52AADF00:   000800b4 dc000003 00000200 16003700 †…´Ü………7.

52AADF10:   50656472 6f506564 726f4761 6c76616f †PedroPedroGalvao

52AADF20:   40466974 2d546563 6e6f6c6f 6769612e †@Fit-Tecnologia.

52AADF30:   6f72672e 62723000 0800b5dc 00000300 †org.br0…µÜ….

52AADF40:   00020016 00370050 6564726f 50656472 †…..7.PedroPedr

52AADF50:   6f47616c 76616f40 4669742d 5465636e †oGalvao@Fit-Tecn

52AADF60:   6f6c6f67 69612e6f 72672e62 72300008 †ologia.org.br0..

52AADF70:   00b6dc00 00030000 02001600 37005065 †.¶Ü………7.Pe

52AADF80:   64726f50 6564726f 47616c76 616f4046 †droPedroGalvao@F

52AADF90:   69742d54 65636e6f 6c6f6769 612e6f72 †it-Tecnologia.or

52AADFA0:   672e6272 30000800 b7dc0000 03000002 †g.br0…·Ü……

52AADFB0:   00160037 00506564 726f5065 64726f47 †…7.PedroPedroG

52AADFC0:   616c7661 6f404669 742d5465 636e6f6c †alvao@Fit-Tecnol

52AADFD0:   6f676961 2e6f7267 2e627200 001e881e †ogia.org.br…..

52AADFE0:   881e881e 34033403 fd02c602 8f025802 †….4.4.ý.Æ…X.

52AADFF0:   2102ea01 b3017c01 45010e01 d700a000 †!.ê.³.|.E…×. .

 

Observe que é justamente esta estrutura de dados que podemos encontrar os dados inseridos na Tabela Clientes, neste caso, a última coluna a direita do nosso Dump apresenta os dados. Além disso, a primeira coluna representa os OffSets existentes em cada neste página de dados, e ao final o comando DBCC Page apresenta o conjunto OffSet Table Row que a tabela Clientes esta associada para cada linha de registro que forma este objeto.

OFFSET TABLE:

 

Row – Offset

12 (0xc) – 820 (0x334)

11 (0xb) – 765 (0x2fd)

10 (0xa) – 710 (0x2c6)

9 (0x9) – 655 (0x28f)

8 (0x8) – 600 (0x258)

7 (0x7) – 545 (0x221)

6 (0x6) – 490 (0x1ea)

5 (0x5) – 435 (0x1b3)

4 (0x4) – 380 (0x17c)

3 (0x3) – 325 (0x145)

2 (0x2) – 270 (0x10e)

1 (0x1) – 215 (0xd7)

0 (0x0) – 160 (0xa0)

 

Fantástico, acabamos de fazer uma consulta a estrutura física e lógica do nosso banco de dados, em especialmente a tabela Cliente e seus dados, armazenados na página 153.

Nosso próximo passo será utilizar o Hex Editor Neo, para realizar o acesso ao arquivo de dados que compõe o Banco de Dados MyDatabaseDesastre e dentro deste arquivo encontrar qualquer dado e realizar a alteração deste dados, seguindo os passos abaixo:

  1. Encerrar o Serviço do SQL Server;
  2. Acessar a pasta ao qual o arquivo de dados MyDatabaseDesastre.mdf esta armazenado;
  3. Editar o arquivo MyDatabaseDesastre.mdf no Hex Editor Neo, conforme a apresenta Figura 3.

Figura3

Figura 3 – Arquivo MyDatabaseDesastre.mdf sendo editado no Hex Editor Neo.

Agora com o arquivo aberto temos que encontrar em qual OffSet os nossos dados começam a ser apresentados, para isso, basta realizar um simples cálculo informando o número da página de dados e multiplicar por 8192, sendo assim, teremos:

  • 153 * 8192 = 1253376 em seguida converter este valor para Binário teremos: 0x00132000.

Pronto é apartir do Offset 0x00132000 que nossos dados começam a aparecer no arquivo MyDatabaseDesastre.mdf, com isso, realize qualquer alteração que você deseja na coluna que representa a parte dos dados inseridos na tabela Clientes, salve sua alterações e reinicialize o serviço do SQL Server.

E agora ao retornamos para o Management Studio e consultarmos a relação de Banco de Dados, poderemos notar que o banco MyDatabaseDesastre neste momento esta apresentando normalmente a sua estrutura de objetos, mas por conseqüência da alteração que realizamos a tabela Clientes esta inacessível, e apresentando erro ao tentar realizar um simples Select. conforme apresenta a Figura 4:

Figura 4

Figura 4 – Estrutura do Banco de Dados MyDatabaseDesastre acessível mas com erros ao tentar consultar a Tabela Clientes.

 

E agora o que vamos fazer?

 

Pois bem, vou deixar você com água na boca, pensando, imaginando, refletindo como podemos resolver este problema em nosso banco de dados, como também, se existe uma forma para contornar a apresentação da mensagem de erro mesmo após a estrutura física e lógica de uma tabela ter sido alterada.

Espero que você tenha gostado, estamos quase no final desta série, retorno em breve apresentando como podemos restaurar a estrutura da nossa tabela clientes e demonstrando como podemos realizar a quebra do arquivo de log do banco de dados MyDatabaseDesastre.

Mais uma vez obrigado.

Até mais.

 

Obtendo informações sobre Permissões de Logins e Usuários no Microsoft SQL Server 2008 e R2.


Galera, boa tarde, tudo em paz?

Estive um pouco ausente nos últimos dias devido aos meus compromissos profissionais e acadêmicos, o que acabou impossibilitando manter o mesmo ritmo de posts em meu blog. Mesmo assim, consegui um tempinho para elaborar mais este artigo, que a meu ver poderá ajudar muito.

Então vamos lá, espero que você goste.

Pois bem, acredito que normalmente em suas atividades diárias você deve ter se deparado com a necessidade de identificar permissões relacionadas:

  • Database Roles;
  • Logins;
  • Usuários; e
  • Server Roles.

Pensando justamente neste tipo de necessidade, coletei alguns Scripts que utilizo para compor a estrutura deste artigo, a fim de ilustrar e demonstrar como podemos através de linha de comando no Management Studio encontrar valiosas informações.

Antes de começar a demonstrar como estes Scripts podem ser utilizados e quais suas respectivas funcionalidades, quero destacar a relação de Catalog Views que iremos trabalhar.

Segue abaixo a relação de Catalog Views:

  • sys.database_permissions: Retorna uma linha para cada permissão ou permissão de exceção de coluna no banco de dados. Para colunas, há uma linha para cada permissão que é diferente da permissão de nível de objeto correspondente.
  • sys.database_principals: Retorna uma linha com o conjunto de permissões para cada Banco de Dados existente na Instância SQL Server.
  • sys.database_role_members: Retorna uma linha para cada membro existente nas Database Roles vinculadas aos Bancos de Dados existentes na Instância SQL Server.
  • sys.schemas: Apresenta uma linha para cada Database Schema vinculadas aos Bancos de Dados existentes na Instância SQL Server.
  • sys.server_principals: Contém uma linha para cada entidade (Usuário do Windows, Login SQL, Grupo de Usuário do Windows, Server Role, etc) de nível de servidor.
  • sys.server_role_members: Apresenta uma linha para cada membro existente nas Server Roles vinculadas ao Servidor ou Instância SQL Server.
  • sys.syslogins: Contém uma linha para cada conta de Login existente no Servidor ou Instância SQL Server.
  • sys.sysobjects: Contém uma linha para cada objeto existente em Banco de Dados, como: Constraints, Rule, Stored Procedures, etc.

Observações:

Importante destacar que todas estas Catalog Views, foram introduzidas a partir da versão do Microsoft SLQ Server 2005, com base, nas antigas System Views existentes no Microsoft SQL Server 2000.

Além disso, algumas destas Catalog Views, como por exemplo: Sys.Server_Principals requer um nível de permissão mais elevado dentro da Instância SQL Server que você se encontra conectado.

Muito bem, agora que já sabemos os objetos que vamos utilizar como mecanismos para obtenção das informações que necessitamos, vamos começar a trabalhar um pouco com os Scripts.

Para este artigo separei três Scripts denominados:

  1. Script – User Role List and Login Type;
  2. Script – Database Login and User Role List; e
  3. Script – User Role Permissions – Grantor, Object Permissions and Permissions Type.

Vou começar seguindo a seqüência que destaquei acima, apresentando o Script que lista ás Roles de Usuários e Tipos de Logins, vinculados a instância ou servidor SQL Server que você esta conectado.

1 – Script – User Role List and Login Type:

SELECT

          CASE

           WHEN SSPs2.name IS NULL THEN ‘Public’

           ELSE SSPs2.name

          END AS ‘Role Name’,

          SSPs.name AS ‘Login Name’,

          Case SSPs.is_disabled

           When 0 Then ‘0 – Habilitado’

           When 1 Then ‘1 – Desabilitado’

          End AS ‘Login Status’,

          SSPs.type_desc AS ‘Login Type’

FROM sys.server_principals SSPs LEFT JOIN sys.server_role_members SSRM

                                                       ON SSPs.principal_id  = SSRM.member_principal_id

                                                      LEFT JOIN sys.server_principals SSPs2

                                                       ON SSRM.role_principal_id = SSPs2.principal_id

WHERE SSPs2.name IS NOT NULL

OR SSPs.type_desc <> ‘CERTIFICATE_MAPPED_LOGIN’

AND SSPs.type_desc <> ‘SERVER_ROLE’

AND SSPs2.name IS NULL

ORDER BY SSPs2.name DESC, SSPs.name

Vale ressaltar que o ponto principal deste código, encontra-se na Junção entre as Catalog Views apresentando acima, onde estamos, realizando a junção, entre a Sys.Server_Principals e Sys.Server_Role_Members, tendo como condição as Colunas Principal_ID e Member_Principal_ID respectivamente.

Além disso, outro fator importante relaciona-se a cláusula Where, responsável em realizar o filtro de dados, através da coluna Type_Desc pertencente a Sys.Server_Principals, garantindo assim o retorno das principals relacionadas somente aos: Logins, Server Roles, Windows Group e Windows Login. Sendo assim, após executar o Script, temos o resultado apresentado abaixo pela Figura 1:

Figura 1 – Relação de Roles, Logins, Status e Tipos de Logins.

Agora, vamos trabalhar com o Script – Database Login and User Role List, responsável em apresentar a relação de Roles, Login e Usuário, vinculados ao Banco de Dados ao qual você esta executando este Script.

2.      Script – Database Login and User Role List:

With Roles (Role, Login, [User])

As

(SELECT SDPs2.name AS Role,

               SDPs1.name AS  [User],

               SL.name AS Login

FROM [Master].sys.database_principals SDPs1

                                              Inner JOIN [Master].sys.syslogins SL

                                                  ON SDPs1.sid = SL.sid  

                                              Inner JOIN [Master].sys.database_role_members SRM

                                                  ON SRM.member_principal_id = SDPs1.principal_id

                                                Inner JOIN [Master].sys.database_principals p2

                                                  ON SRM.role_principal_id = SDPs2.principal_id

                                                  AND SDPs2.type IN (‘R’)

WHERE SDPs1.type IN (‘S’,’U’,’G’))

Select * from Roles

ORDER BY Role, Login

Se compararmos o tamanho deste segundo script em relação ao primeiro, podemos observar que o nível de complexidade é maior, devido à quantidade de junções realizadas, entre as Catalog Views:

  • Sys.Database_Principals e Sys.SysLogin;
  • Sys.Database_Principals e Sys.Database_Role_Members; e
  • Sys.Database_Role_Members e Sys.Database_Principals.

Outro detalhe importante no último Join está sendo utilizado o operador And na coluna Type forçando o filtro de dados, retornando somente a Database Role. Em contra partida a cláusula Where declarada abaixo esta filtrando as Databases Roles do Tipo: SQL User, Windows User e Windows Group.

Além disso, podemos também notar a utilização de uma CTE (Common Table Expression) como um mecanismo que poderá nos possibilitar a reutilização do código de forma mais elegante.

Ao realizarmos a execução deste teremos um resultado similar ao apresentado pela Figura 2:

Figura 2 – Role, Login e Usuário.

Bem, estamos quase no final, esta faltando apresentar o último Script, denominado Script – User Role Permissions – Grantor, Object Permissions and Permissions Type. Neste último Script teremos o retorno do Nome do Usuário, Conjunto de Permissões, Permissões por Objeto, Grantor e o Tipo da Permissão.

3.      Script – User Role Permissions – Grantor, Object Permissions and Permissions Type.

SELECT SDPs1.name AS [User],

            SDBPs.permission_name AS [Permissions],

             ISNULL(SDBPs.class_desc,”) COLLATE latin1_general_cs_as +     

 ISNULL(‘:’+SO.name,”) COLLATE latin1_general_cs_as   +  ISNULL(‘:’+SC.name,”) COLLATE latin1_general_cs_as As PermissionObjetct,

            SDPs.name as Grantor,

            SDBPs.state_desc AS PermissionType

FROM [Master].sys.database_permissions SDBPs

                                                INNER JOIN  [Master].sys.database_principals  SDPs

                                                on SDBPs.grantor_principal_id=SDPs.principal_id

 INNER JOIN  [Master].sys.database_principals SDPs1

  on SDBPs.grantee_principal_id=SDPs1.principal_id

                                              LEFT OUTER JOIN [Master].sys.sysobjects SO

                                               on SDBPs.major_id=SO.id and SDBPs.class =1

                                              LEFT OUTER JOIN [Master].sys.schemas  SC

                                               on SDBPs.major_id=SC.[schema_id]

WHERE SDPs1.name IN (‘public’)

And SDBPs.permission_name NOT IN(‘CONNECT’)

ORDER BY User, Permissions, PermissionObjetct

Boa parte das Catalog Views apresentadas como começo do artigo é utilizada neste terceiro script no processo de junção, onde podemos identificar as seguintes junções:

  • Sys.Database_Permissions e Sys.Database_Principals;
  • Sys.Database_Principals e Sys.Database_Principals;
  • Sys.Database_Principals e Sys.SysObjects; e
  • Sys.Database_Principals e Sys.Schemas.

Da mesma forma que os outros Scripts, também podemos notar a utilizar da cláusula Where e outros operadores lógicos e condicionais como mecanismos de filtragem de dados. Se observarmos na cláusula Where está sendo filtrada as permissões pelo nome do usuário, neste caso, o Public em conjunto com o nome da permissão neste tipo Connect.

Ao executarmos este Script poderemos receber um retorno similar ao apresentado na Figura 3:

Figura 3 – Relação de Usuários e suas Permissões.

Neste momento, chegamos ao final de mais um artigo. Espero que as informações e exemplos apresentados aqui possam te ajudar.

Fique a vontade para deixar seu comentário e compartilhar este material com seus contatos.

Mais uma vez obrigado.

Até mais.