Short Scripts – Maio 2020

Neste segundo post de 2020 da sessão Short Scripts, você vai encontrar 7 exemplos diferentes de como podemos utilizar as Extended Stored Procedures (XPs), algumas não documentadas no Microsoft SQL Server.


Olá boa tarde, como vai?

Seja bem-vindo, em mais um post da sessão Short Scripts, o segundo post desta sessão em 2020 e o de número 41 em seu total.

Espero que você e seus familiares se encontrem bem neste momento terrível que estamos vivendo em todo Mundo.

Mantendo a tradição estou retornando com mais um conjunto dos “curtos ou pequenos” scripts catalogados e armazenados em minha biblioteca pessoal de códigos relacionados ao Microsoft SQL Server e sua fantástica linguagem de desenvolvimento Transact-SQL.

Como promessa é dívida e deve ser cumprida “ou melhor” compartilhada, vou pagar a minha mais uma vez hoje, feita no encerramento do post anterior publicado no mês de fevereira em 2010, se por acaso você ainda não acessou o mesmo, calma, fique tranquilo, tudo vai dar certo, no encerramento deste post você terá a sua disposição a relação das últimas cinco publicações relacionadas aos Short Scripts.

Vamos caminhar mais um pouco então……..

O post de hoje

Para este post, não vou exatamente compartilhar um conjunto variado de scripts que foram catalogados nos últimos meses, ao contrário, vou disponibilizar um conteúdo que foi elaborado hoje, dedicado de forma única e exclusiva a demonstrar como podemos utilizar as chamadas Extended Stored Procedures no Microsoft SQL Server.

Em conjunto com o uso de forma de execução da Extended Stored Procedure, os exemplos de código aqui compartilhados se relacionam com os seguintes assuntos:

● Cláusula From;
● Cláusula Where;
● Comando Alter Table;
● Comando Begin;
● Comando Begin;
● Comando Create Procedure;
● Comando Create Table;
● Comando Declare;
● Comando Exec;
● Comando Execute;
● Comando Go;
● Comando Insert;
● Comando Reconfigure;
● Comando Select;
● Comando Set;
● Comando Union;
● Comando Update;
● Comando Use;
● DataType Char();
● DataType Datetime;
● DataType Decimal();
● DataType Varchar();
● Diretiva Set;
● Extended Stored Procedure XP_CMDShell;
● Extended Stored Procedure XP_ExecResult;
● Extended Stored Procedure XP_FixedDrives;
● Extended Stored Procedure XP_ReadErrorLog;
● Extended XP_Delete_File;
● Função Convert();
● Função DataLength();
● Função DateAdd();
● Função GetDate();
● System Stored Procedure SP_Configure;
● System Stored Procedure SP_Help; e
● Variáveis.
 

Chegou a hora, mãos nos teclados, a seguir apresento os códigos e exemplos selecionados para o Short Script – Maio 2020. Vale ressaltar que todos os scripts publicados nesta sessão foram devidamente testados, mas isso não significa que você pode fazer uso dos mesmo em seu ambiente de produção, vale sim todo cuidado possível para evitar maiores problemas.

Fique à vontade para compartilhar, comentar e melhorar cada um destes códigos.


Short Scripts

— Exemplo 1 — Identificando a porta Padrão do Microsoft SQL Server através da XP_ReadErrorLog —
Use Master
Go

Exec XP_readerrorlog 0, 1, N’Server is listening on’
Go

— Exemplo 2 — Habilitando a Extended Stored Procedure XP_CMDShell -utilizand a Sigla DSH —

— Ativando a exibição das configurações avançadas —
EXECUTE sys.sp_configure @configname = ‘show advanced options’,@configvalue = 1
Go

— Aplicando a alteração —
Reconfigure
Go

— Ativando para uso da XP_CMDShell —
EXECUTE sys.sp_configure @configname = ‘dsh’,@configvalue = 1
Go

— Aplicando a alteração —
Reconfigure
Go

Observação: Como você deve ter percebido, para se fazer uso da Extended Stored Procedure XP_CMDShell, que por padrão vem desabilitada nas configurações internas do SQL Server, temos a necessidade de ativar a exibição das configurações avançadas da nossa instância ou servidor, utilizando a System Stored Procedure SP_Configure, e posteriormente ativar da XP_ CMDShell.

Caso queira saber mais sobre este recurso e demais configurações existentes, acesse:

— Exemplo 3 — Obtendo a quantidade de Megabytes livres em disco através da XP_FixedDrives
Exec xp_fixeddrives
Go

— Exemplo 4 — Excluíndo arquivos específicos através da XP_DeleteFile
Declare @DateString CHAR(10)
Set @DateString = CONVERT(CHAR(10), DATEADD(d, -2, GETDATE()), 103)

Execute master.dbo.xp_delete_file 0, N’E:\MSSQL2012-Backup\BaanModelEA’,N’bak’, @DateString, 1
Go

— Exemplo 5 — Importando o conteúdo de arquivos .csv para dentro de uma tabela através da XP_CMDShell
CREATE TABLE Test
(Empid varchar(6),
Empname varchar(100),
BirthDate datetime,
Salary decimal(12,2),
Nome Varchar(2000))
Go

INSERT INTO Test
SELECT ‘EMP001′,’Suresh’,’19910619′,3000,’Pedro Galvão’
UNION ALL
SELECT ‘EMP002′,’Ramesh’,’19710103′,20000,’Teste’
UNION ALL
SELECT ‘EMP003′,’Nilesh’,’19800722′,4760,”
UNION ALL
SELECT ‘EMP004′,’Kumar’,’19680911′,42000,”
Go

Declare @Comando Varchar(500)
Set @Comando=’bcp Master..Test out c:\teste.csv -SServer -c -t, /CACP -T’

Exec xp_cmdshell @Comando
Go

— Exemplo 6 — Armazenando o Endereço de IP em uma tabela, através da execução de uma Stored Procedure, com base no resultado da XP_CMDShell —

— Exibindo as configurações avançadas —
EXEC sp_configure ‘show advanced options’, 1
Go

— Aplicando a alteração —
RECONFIGURE
Go

— Ativando o uso da XP_CMDShell —
EXEC sp_configure ‘xp_cmdshell’, 1
Go

— Aplicando a alteração —
RECONFIGURE
Go


Create Procedure P_RetornarIP @IP VarChar(25) Output
As
Begin

Set NoCount On

Declare @Auditoria2 Table
(Codigo Int Identity(1,1),
IP VarChar(2000))

Set RowCount 8

Insert Into @Auditoria2
exec master.dbo.xp_cmdshell ‘ipconfig’

Select @IP=(Select Replace(Substring(IP,CharIndex(‘:’,IP,1),25),’:’,”) from @Auditoria2
Where Codigo = 8)

End

Create Table Auditoria
(Codigo Int Identity(1,1),
HostName VarChar(20) Null)

Declare @IP VarChar(25)

Exec P_RetornarIP @IP OutPut
Insert Into Auditoria Values (@IP)

Select * from Auditoria
Go

— Exemplo 7 — Executando uma Instrução Transact-SQL através da XP_ExecResultSets —
Exec Master..XP_ExecResultSet ‘Select ”SP_help ””produtos”””’, ‘BancoDeDados’
Go

Exec Master..XP_ExecResultSet ‘Select ”Select * From produtos”’, ‘BancoDeDados’
Go


Muito bem, missão mais que cumprida!

Uma nova relação de short scripts acaba de ser compartilhada, mesmo sendo denominados shorts entre aspas “curtos ou pequenos”, posso garantir que todos estes exemplos são de grande importância, apresentam um valor e conhecimento do mais alto nível.

Chegamos ao final de mais um Short Scripts, espero que este material possa lhe ajudar, ilustrando o uso de alguns recursos e funcionalidades do Microsoft SQL Server.

Acredito que você tenha observado que estes códigos são conhecidos em meu blog, todos estão relacionados aos posts dedicados ao Microsoft SQL Server publicados no decorrer dos últimos anos.

Boa parte deste material é fruto de um trabalho dedicado exclusivamente a colaboração com a comunidade, visando sempre encontrar algo que possa ser a solução de um determinado problema, bem como, a demonstração de como se pode fazer uso de um determinado recurso.

Links

Caso você queira acessar os últimos posts desta sessão, não perca tempo acesse os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2020/02/05/8295/

https://pedrogalvaojunior.wordpress.com/2019/11/15/short-scripts-novembro-2019/

https://pedrogalvaojunior.wordpress.com/2019/09/11/short-scripts-setembro-2019/

https://pedrogalvaojunior.wordpress.com/2019/06/08/short-scripts-junho-2019/

https://pedrogalvaojunior.wordpress.com/2019/03/15/short-scripts-marco-2019/

Agradecimento

Obrigado mais uma vez por sua visita, fico honrado com sua ilustre presença ao meu blog, desejo e espero que você possa ter encontrado algo que lhe ajudou.

Volte sempre, nos encontraremos mais uma vez na sessão Short Scripts no post a ser publicado no mês de agosto em 2020.

Um forte abraço, saúde e paz.

Até mais.

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 seu conhecer.

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 – Simbolo 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, neste momento é o melhor que podemos fazer, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria, galeria e esperança.

Até mais.

#28 – Para que serve

Utilizando o operador relacional Pivot em combinação com querys dinâmicas, funções Stuff(), String_Agg() e muito mais…..


Olá pessoal, boa tarde!!!

E aí, estão no ritmo do carnaval? Se for igual eu tenho a certo que não, particularmente eu não sou muito adepto desta tradicional festa brasileira e nos últimos anos considerada mundial, mesmo assim vou fazer uso dela na escrita deste post para ajudar você a se sentir na avenida.

Que bom saber que mesmo neste feriadão que estamos vivendo você está dando uma passadinha aqui no meu blog, espero que esta visita possa ser muito proveitosa e enriquecedora.

No post de hoje, vou demonstrar um dos mais tracionais operadores relacionais existente no Microsoft SQL Server adicionado a partir da versão 2005, que nos permite utilizar como expressões de Table-Valued (Tabela Valorizada) dentro de outra tabela. Tenho a certeza que em algum momento você já deve ter feito uso deste operador.

Continue Lendo “#28 – Para que serve”

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.

Script Challenge – 2019 – Post 16


Olá, bom dia amantes de banco de dados…

Tudo bem? Nossa como o tempo esta passando, como você sabe a cada quatro meses nos encontramos em mais um post dedicado especialmente a sessão Script Challenge.

Hoje sabado dia 26/10 a primavera chegou a alguns dias, mas continuamos sofrendo muito com este forte calor,  pode até parecer coincidência mas o post anterior publicado no mês de fevereiro desta sessão também foi iniciado falando do calor. O ano de 2019 esta terminando da mesma forma que começou: Sol forte, Ventos quentes e Temperaturas altas para os padrões nacionais, em especial para minha “grande” São Roque (kkkkk……)

O post de hoje não esta relacionado com as mudanças de temperatura do nosso clima, muito menos com o calor, chuva, ao contrário, ele vai tentar lhe ajudar a identificar possíveis situações que começam a ser apresentadas em nosso ambiente decorrentes de mudança rápida, totalmente inesperada, algo que ocorre em poucos minutos que poderá provocar um estrago, isso é muito comum de acontecer. Não é mesmo?

Pense então, nas situações relacionados ao seu ambiente de banco de dados que em poucos minutos começa a se comportar de forma totalmente desconhecida, é a mesma coisa que sair para dar uma volta e começar a chover e você não tem um guarda-chuva, e ai que fazer, como identificar esta mudança ou o que pode ter provocado isso, mas principalmente a partir de qual momento esse comportamento diferente teve início.

Introdução

Os posts publicados nesta sessão tem o objetivo de desafiar o visitante a descobrir o que um determinado script pode fazer ao ser executado, e não somente isso, mostrar como podemos aprender com o uso da linguagem Transact-SQL e sua vasta coleção de comandos, funções e instruções adicionadas a cada nova versão ou atualização do Microsoft SQL Server.

Se você ainda não conhecia a sessão Script Challenge, fique tranquilo vai ter a possibilidade agora mesmo, como também a cada 4 meses poder desfrutar de um novo desafio e sua respectiva resposta, por isso esta sessão é denominada Script Challenge(Script Desafio ou Desafio do Script), bom a melhor forma de traduzir eu deixo para você escolher.

Seguindo um frente….

Gostaria de destacar mais uma vez duas mudanças iniciais implementadas na sessão Script Challenge tendo como base o post publicado em outubro de 2017, sendo elas:

  1. Como maneira ou forma de dificultar ainda mais o nível de complexidade do código, o bloco de código que representa o Script Challenge selecionado para compor o post será  apresentado no formato de imagem ou figura; e
  2. Algumas partes das linhas de código, trechos, ou partes de código serão omitidas, justamente como forma de tornar este código ainda mais desafiador.

Antes de destacar o script de hoje, não custa nada saber um pouco mais sobre esta sessão, por este motivo, quero lhe contar um pouco da história que cerca os posts relacionadas a ela…

Um pouco de História

Esta é uma sessão criado no final do ano de 2010 e mantida mensalmente até meados de 2012, desde então não me dediquei mais a mesma devido principalmente em não conseguir identificar possíveis scripts dentro da minha biblioteca que poderiam ser apresentados como um scripts considerados como desafio para os profissionais da área de banco de dados.

Mas acredito que nos últimos anos com o crescimento do Microsoft SQL Server, seu nível de evolução, amadurecimento e recursos adicionais, como também, meu nível de experiência profissional e acadêmica também evolui muito, sinto-me preparado para retornar com esta sessão e poder de forma bastante técnica, didática e conceitual poder lançar um “desafio” e responder o mesmo com muito segurança.

Outro detalhe importante, esta é uma sessão que foi criada, pensando em apresentar pequenos blocos de códigos oriundos da linguagem Transact-SQL que possam apresentar um nível de dificuldade e conhecimento técnico um pouco mais elevado, exigindo assim uma análise mais profunda e até mesmo a criação um pequeno cenário de teste para seu entendimento.

Vamos então conhecer o bloco de código selecionado para ser o Script Challenge deste post.


Script Challenge – 16

O bloco de código Transact-SQL selecionado para fazer parte do Script Challenge de hoje, esta relacionado com uma importante atividade exercida por Administradores de Servidores, DBAs e Administradores de Banco de Dados.

Trata-se de algo que pode ajudar a identificar possíveis situações que venham a atrapalhar o processamento e execução de nossas querys e transações. Ao contrário do Script Challenge 15, este script possui a finalidade de apresentar os custos de processamento que estão sendo demandados pelos processos em execução relacionados diretamente com o Microsoft SQL Server.

Não deveria, mas vou lhe ajudar, apresentando duas dicas sobre este desafio

  1. O mesmo, pode ser executado em conjunto com as demais sessões, transações ou querys em execução, sem necessitar que qualquer procedimento de manutenção ou alterações na configuração do SQL Server para sua execução, como também, esta totalmente relacionado com o que venha ou possa estar sendo processado pelo sistema operacional que necessite de dados do SQL Server naquele exato momento; e
  2. Preste atenção na relação de tags que estão compartilhadas, nelas você poderá encontrar as partes omitidas do bloco de código, bem como, a resposta para a enquente apresentado no final do post.

E ai, ficou curioso para saber o que este script realiza? Qual seria a sua atividade? O conjunto de resultados que ele retornaria? Pois bem, foi fazer o papel de chato, a resposta para estes e outras demais questões não serão apresentadas hoje (hahahahahahaha……), vou deixar com que você quebre um pouco a sua cabeça, afim de tentar matar esta curiosidade, no final do post como de costume você terá a sua disposição uma enquete que lhe permitirá expor tentar encontrar a resposta para este desafio.

A seguir apresento o bloco de código:


Figura 1 – Short Script 16.

Muito bem, nosso Script Challenge esta apresentado. Você preparado para mais este desafio?

Tenho a certeza que sim!


Sua participação

Legal, agora quero conter com a sua participação, me ajudando a responder este post, outra grande novidade que estou adicionando aos posts da sessão Script Challenge será uma pequena enquete com possíveis respostas para identificar qual é a correta, relacionada com o desafio apresentado através do bloco de código selecionado para este post, desta forma, apresento a seguir a Enquete – Script Challenge – 16 e suas alternativas de resposta:

Seguindo em frente, já conhecemos o Script Challenge selecionado, sua enquete e relação de opções de resposta, fica faltando somente a sua participação, algo que eu tenho a certeza que vai acontecer rapidamente.

Durante quanto tempo posso participar…

Outra grande mudança na sessão Script Challenge é seu tempo de publicação “validade”, anteriormente os posts desta sessão eram publicados mensalmente ou bimestralmente, agora serão publicados em um período mais longo, ou seja, a cada 4 meses estarei compartilhando com vocês novos posts dedicados exclusivamente para esta sessão.

Desta forma, você terá mais tempo para participar e me ajudar e encontrar a resposta correta para este desafio, enviando suas possíveis sugestões, críticas e até mesmo alternativas de resposta para minha enquete.

Posts anteriores

Caso esta seja a primeira vez que você acessa um post desta sessão, fico muito feliz e aproveito para compartilhar os posts mais recentes:

https://pedrogalvaojunior.wordpress.com/2019/06/26/script-challenge-15-a-resposta/

https://pedrogalvaojunior.wordpress.com/2019/02/13/script-challenge-2019-post-15/

https://pedrogalvaojunior.wordpress.com/2018/10/06/script-challenge-14-a-resposta/

https://pedrogalvaojunior.wordpress.com/2018/06/29/script-challenge-2018-post-14/


Agradecimentos

Obrigado por sua visita, espero que post apresentado como um possível “desafio” possa ser úteis e ao mesmo tempo prover conhecimento, aprendizado ou mostrar recursos e problemas existentes no Microsoft SQL Server que as vezes parecem não ter uma resposta, tratados com “bichos de sete cabeças”.

Um forte abraço nos encontramos em breve nas demais sessões, e especialmente em fevereiro de 2020 em mais um post da sessão Script Challenge, o qual apresentará a resposta para este post.

Fique a vontade para conhecer demais post publicados até o presente momento em todas as sessões do meu blog.

Tenha um ótimo final de semana.

Abraços.

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.

Dica do Mês – Identificando os números ausentes em uma sequência numérica


Olá pessoal, bom dia.

Tudo bem? Estamos no ultimo final de semana do mês de Setembro, a primavera chegou, já estamos vivendo a última estação do ano, 2019 voando, passando de forma extremamente rápida, o que muitas vezes não nos deixa perceber o quanto nossa vida é uma correria.

Mesmo com este correira, temos que tentar aproveitar todo tempo disponível dentro das 24 horas diárias para se dedicar também ao que gostamos de fazer, e por isso estou aqui novamente em mais um post do meu blog, que honra ter encontrar aqui neste sábado, sua presença é muito importante.

Ainda mais na sessão Dica do Mês, a qual foi criada á alguns anos com objetivo de compartilhar algo que possa ser considerada como uma dica ou melhores práticas para se trabalhar na área de banco de dados, mais especificamente com o Microsoft SQL Server.

A dica de hoje esta envolvida diretamente com os dados manipulados diariamente por empresas, instituições ou organizações públicas e privadas, me refiro a lançamento feitos através de um SIG – Sistema de Informação Gerencial ou ERP – Enterprise Resource Planning, que muitas vezes utilizamos para dar entrada em lançamento contábeis, movimentações fiscais e financeiras, ou “basicamente” cadastrar uma nota fiscal de recebimento de produto no almoxarifado da empresa.

Para facilitar o entendimento, e server como base de exemplo para nossa dica, dentre as mais diversas áreas, setores e departamentos que constituem uma empresa, selecione para esta dica, uma das mais tradicionais áreas conhecida por muitos como Controle de Estoque vinculado com os lançamentos contábeis.

Mais ainda não ficou claro o objetivo desta dica, não é mesmo? Tenho a certeza que não, mas tenha calma, você vai descobrir a seguir o que estou querendo te apresentar.

Continue Lendo “Dica do Mês – Identificando os números ausentes em uma sequência numérica”