Short Scripts – Fevereiro 2023

Olá pessoal, boa tarde…

Após um domingo de fortes chuvas aqui na região de São Roque, hoje segunda-feira uma linda tarde, com temperatura agradável e um lindo céu azul.

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

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 setembro de 2022, 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, vou compartilhar um conjunto diversificado de scripts que foram catalogados nos últimos meses, que podem ser implementados em diferentes ambientes banco de dados no Microsoft SQL Server.

Os exemplos de código aqui compartilhados se relacionam com os seguintes assuntos:

● Cláusula Default Values,
● Cláusula Having,
● Comando Begin Transaction,
● Comando Commit,
● Comando Create Database,
● Comando Create Table,
● Comando Group By,
● Comando Group By Grouping Sets,
● Comando Insert,
● Comando Order By,
● Comando Order By OffSet,
● Comando Order By OffSet Fecth First,
● Comando Order By OffSet Fecth Next,
● Comando Rollback,
● Comando Select,
● Comando Select Values,
● Comando Top,
● Comando Top Percent,
● Comando Use,
● Função de Agregação Count(),
● Função de Agregação Max(),
● Função de Agregação Min(),
● Função de Sistema System_User(),
● Operador de busca aproximada Like,
● Operador lógico condicional Between,
● Operador lógico condicional In,
● Operador lógico condicional Not In,
● Variável de Sistema @@SPID, e
● Visão de Gerenciamento Dinâmico sys.dm_exec_sessions.

Chegou a hora, mãos nos teclados, a seguir apresento os códigos e exemplos selecionados para o Short Script – Fevereiro 2023.

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, tenha todo cuidado possível para evitar maiores problemas.

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


Short Scripts

-- Short Script 1 - Obtendo informações sobre as sessões em execução --

Select @@SPID As 'System Process', -- variável de sistema
       SYSTEM_USER As 'Login Name',
       User As 'User Name'
Go
-- Short Script 2 - Consultando a visão de sistema sys.dm_exec_sessions para obter informações sobre as sessões --

Select Top 5 -- Determinar a quantidade de linhas a serem apresentadas em tela
       session_id As 'Id', 
       login_name As 'Nome do Login',
       login_time As 'Hora de Acesso', 
       program_name As 'Programa utilizado',
       status As 'Status da Sessão', 
			language As 'Linguagem do Login ou Usuário'
From sys.dm_exec_sessions
Order By login_time Desc -- Ordenando os dados em ordem decrescente através da coluna login_time
Go
-- Short Scripts 3 - Trabalhando com blocos de transação --

-- Brincando com Transações --
Create Table TabelaValoresPadroes
 (Codigo BigInt Identity(2,2),
  Texto Varchar(Max) Default 'Este é um teste de escrita',
  Data DateTime2 Default GetDate()+5)
Go

-- Inserindo uma massa de dados na TabelaValoresPadroes --
Insert Into TabelaValoresPadroes Default Values -- Especificando valores padrões
Go 10000

-- Consultando 10% do volume de linhas inseridas --
Select Top 10 Percent Codigo, Texto, Data From TabelaValoresPadroes
Order By Codigo Desc
Go

-- Manipular transações --

-- Abrindo um bloco de Transação --
Begin Transaction Tran1

 Delete From TabelaValoresPadroes
 Where Codigo >=1200 And Codigo <=3200
 Go

 -- Consultando a faixa de dados removida anteriormente --
 Select Codigo, Texto, Data From TabelaValoresPadroes
 Where Codigo >=1200 And Codigo <=3200
 Go

-- Abrir uma nova query --

-- Desfazendo a operação de Delete --
Rollback Transaction Tran1
Go

-- Confirmando a operação da Transação Tran1 --
Commit Transaction Tran1
Go
-- Short Script 4 - Ordenando valores inteiro em Ordem Decrescente --

Select Numeros From (Values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) As Valores (Numeros)
Order By Numeros Desc
Go
-- Short Script 5 - Ordenando Valores caracteres em Ordem Crescente através de Codigo, apresentando somente as duas primeiras linhas de registro --

Select Codigo As 'Código', Descricao As 'Descrição' 
From (Values (1,'Arroz'),(2,'Feijão'),(3,'Bolacha'),
             (4,'Fruta'),(5,'Legumes'),(6,'Molho')) As Produtos (Codigo, Descricao)
Order By Codigo Asc
OffSet 0 Rows -- Estabelece o novo conjunto de linhas ou posição inicial --
 Fetch First 2 Rows Only -- Determina a quantidade de linhas retornadas em tela logo após posição inicial definida --
Go
-- Short Script 6 - Ordenando Valores caracteres em Ordem Crescente através de Codigo, apresentando as linhas a partir do segundo registro --


Select Codigo, Descricao From (Values (1,'Arroz'),(2,'Feijão'),(3,'Bolacha'),
                                                                     (4,'Fruta'),(5,'Legumes'),(6,'Molho')) As Produtos (Codigo, Descricao)
Order By Codigo Asc 
OffSet 1 Row -- Estabelece o novo conjunto de linhas ou posição inicial --
Go
-- Short Script 7 - Realizando agrupamento de dados subgrupos através do cláusula Grouping Sets --

-- Criando a Tabela OrdemProducao --
Create Table OrdemProducao
 (NumProducao Int Not Null,
  Data Date Not Null,
  CodFuncionario Int Not Null,
  Setor Varchar(2) Not Null, 
  Quantidade Int Not Null         
 ) 
Go

-- Adicionando Chave Primária na Tabela OrdemProducao --
Alter Table OrdemProducao
 Add Constraint [PK_OrdemProducao_NumProducao] Primary Key Clustered (NumProducao)
Go 

-- Inserindo dados na Tabela OrdemProducao --
Insert Into OrdemProducao (NumProducao, Data, CodFuncionario, Setor, Quantidade)
Values 
(1000, '20091001',1,'A',20),
(1001, '20091002',2,'B',30),
(1002, '20091003',3,'D',15),
(1003, '20091005',2,'D',12),
(2000, '20100210',4,'C',40),
(2001, '20100211',4,'C',35),
(2002, '20100312',2,'A',22),
(2004, '20100414',2,'B',12),			  
(3005, '20110601',1,'C',50),
(3006, '20110602',3,'B',60)

Go

Insert Into OrdemProducao (NumProducao, Data, CodFuncionario, Setor, Quantidade)
Values 
(10000, '20091001',1,'A',20),
(10001, '20091002',2,'B',30),
(10002, '20091003',3,'D',15),
(10003, '20091005',2,'D',12),
(20000, '20100210',4,'C',40),
(20001, '20100211',4,'C',35),
(20002, '20100312',2,'A',22),
(20004, '20100414',2,'B',12),			  
(30005, '20110601',1,'C',50),
(30006, '20110602',3,'B',60)

Go

-- Aplicando o Grouping Sets (Setor, CodFuncionario e AnoProducao) na Tabela OrdemProducao --
Select Setor, CodFuncionario, YEAR(Data) As 'Ano de Produção', SUM(Quantidade) As Soma
from dbo.OrdemProducao
Group By GROUPING Sets
(
 (Setor, CodFuncionario, YEAR(DATA)) 
)
Go

-- Aplicando o Grouping Sets (Setor, CodFuncionario e AnoProducao + AnoProd) na Tabela OrdemProducao --
Select Setor, CodFuncionario, YEAR(Data) As 'Ano de Produção', SUM(Quantidade) As Soma
from dbo.OrdemProducao
Group By GROUPING Sets
(
 (Setor, CodFuncionario, YEAR(DATA)),
 (YEAR(Data))
)
Go

Muito bem, missão mais que cumprida!

Uma super e especial 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:

Agradecimento

Obrigado mais uma vez por sua visita, fico honrado com sua ilustre presença, 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 próximo post.

Tenha uma ótima semana.

Abraços.

Este post foi publicado em Administração, Alunos e Educadores, Azure, Banco de Dados, Banco de Dados, Curiosidades, DBA, Desenvolvimento, Desenvolvimento, Dicas, Diversos, Educação, Interoperabilidade, Linux, Microsoft, MSDN, Mundo SQL Server, Scripts, Servidores, Servidores de Bancos de Dados, Short Scripts, Sistema Operacional, SQL Server, TechNet, Telecomunicações, Transact-SQL, Usuários, Utilitários, VIRTUAL PASS BR, Virtualização, Visual Studio, Visual Studio, Windows, Windows Server e marcado com a tag , , , , em por .

Sobre Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Mestre em Ciências Ambientes na linha de pesquisa em Geoprocessamento e Modelagem Matemática pela Universidade Estadual Paulista "Júlio de Mesquita Filho". Pós-Graduado no Curso de Gestão e Engenharia de Processos para Desenvolvimento de Software com RUP na Faculdade FIAP – Faculdade de Informática e Administração Paulista de São Paulo. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação pela Uninove – Campus São Roque. Formação MCDBA Microsoft, autor de artigos acadêmicos e profissionais postados em Revistas, Instituições de Ensino e WebSistes. Meu primeiro contato com tecnologia ocorreu em 1994 após meus pais comprarem nosso primeiro computador, ano em que as portas para este fantástico mundo se abriram. Neste mesmo ano, comecei o de Processamento de Dados, naquele momento a palavra TI não existia, na verdade a Tecnologia da Informação era conhecida como Computação ou Informática, foi assim que tudo começou e desde então não parei mais, continuando nesta longa estrada até hoje. Desde 2001 tenho atuado como Database Administrator – Administrador de Banco de Dados – SQL Server em tarefas de Administração, Gerenciamento, Migração de Servidores e Bancos de Dados, Estratégias de Backup/Restauração, Replicação, LogShipping, Implantação de ERPs que utilizam bancos SQL Server, Desenvolvimento de Funções, Stored Procedure, entre outros recursos. Desde 2008 exerço a função de Professor Universitário, para as disciplinas de Banco de Dados, Administração, Modelagem de Banco de Dados, Programação em Banco de Dados, Sistemas Operacionais, Análise e Projetos de Sistemas, entre outras. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping, etc. Trabalhei entre 2011 e 2017 como Administrador de Banco de Dados e Coordenador de TI no FIT – Instituto de Tecnologia da Flextronics, atualmente exerço a função de Professor Universitário na FATEC São Roque. CTO da Galvão Tecnologia, consultoria especializada em Gestão de TI, Administração de Servidores Windows Server, Bancos de Dados Microsoft SQL Server e Virtualização. Possuo titulação Oficial Microsoft MVP e reconhecimentos: MCC, MSTC, MIE e MTAC.