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.

Autor: Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação pela Uninove - Campus São Roque. 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. Pós-Graduado em Gestão da Tecnologia da Informação Faculdade - ESAMC Sorocaba. Cursando Mestrado em Ciências da Computação - UFSCar - Campus - Sorocaba. 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 1995 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, Triggers. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping, para versões: 2000, 2005, 2008, 2008 R2, 2012 e 2014. Atualmente trabalho como Administrador de Banco de Dados no FIT - Instituto de Tecnologia da Flextronics, como também, Consultor em Projetos de Tunnig e Performance para clientes. 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. Possuo titulação Oficial Microsoft MVP - SQL Server renovada desde 2007.

Um comentário em “Short Scripts – Janeiro – 2014”

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s