Short Scripts – Novembro 2012

Salve, salve comunidade.

Estou de volta nesta nova sessão do meu blog Short Scripts. Estes pequenos ou simples scripts podem ajudar em muito nas atividades dos Profissionais de TI em todos os seguintes.

Hoje vou disponibilizar, mais 10 Short Scripts de diversas funcionalidades.

Segue abaixo os 10 Short Scripts para esta galeria:

 

1-      Exemplo – Básico – Substring na cláusula Order By:

Declare @Tabela Table

(Codigo VarChar(15))

 

Insert Into @Tabela Values(‘191-XXX-003’)

Insert Into @Tabela Values(‘192-XXX-003’)

Insert Into @Tabela Values(‘193-XXX-003’)

Insert Into @Tabela Values(‘194-XXX-003’)

Insert Into @Tabela Values(‘195-XXX-003’)

 

Insert Into @Tabela Values(‘191-XXX-001’)

Insert Into @Tabela Values(‘192-XXX-001’)

Insert Into @Tabela Values(‘193-XXX-001’)

Insert Into @Tabela Values(‘194-XXX-001’)

Insert Into @Tabela Values(‘195-XXX-001’)

 

 

Insert Into @Tabela Values(‘191-XXX-002’)

Insert Into @Tabela Values(‘192-XXX-002’)

Insert Into @Tabela Values(‘193-XXX-002’)

Insert Into @Tabela Values(‘194-XXX-002’)

Insert Into @Tabela Values(‘195-XXX-002’)

 

 

Select * from @Tabela

Order By SubString(codigo,Len(Codigo)-2,3) Asc

 

2-      Exemplo – Básico – Refazendo – Numeração de Colunas Identity:

Use Laboratorio

 

Declare @Identity Int

 

—Refazendo numeração Controle de Entrada – Matéria Prima —

Set @Identity=(Select Ident_Current(‘CTEntrada_PQC’))

 

DBCC CheckIdent(‘CTEntrada_PQC’,Reseed,@Identity)

 

—Refazendo numeração Controle de Produção – Moinho —

Set @Identity=(Select Ident_Current(‘CTProducao_Moinho’))

 

DBCC CheckIdent(‘CTProducao_Moinho’,Reseed,@Identity)

 

—Refazendo numeração Controle de Entrada – Recebimento – Látex —

Set @Identity=(Select Ident_Current(‘CTEntrada_Recebimento_Látex’))

 

DBCC CheckIdent(‘CTEntrada_Recebimento_Latatex’,Reseed,@Identity)

 

—Refazendo numeração Controle de Produção – PVM —

Set @Identity=(Select Ident_Current(‘CTProducao_PVM’))

 

DBCC CheckIdent(‘CTProducao_PVM’,Reseed,@Identity)

Go

 

3-      Exemplo – Criando – Array:

DECLARE @StringDaAplicacao VARCHAR(1000)

 

SET @StringDaAplicacao = ‘”jan”, “fev”, “mar”, “abr”, “mai”, “jun”, “jul”, “ago”, “set”, “out”,”nov”, “dez”‘

 

DECLARE @xml XML, @Var VARCHAR(1000)

 

— Retirar as aspas duplas e espaços

SET @Var = REPLACE(@StringDaAplicacao,'”‘,”)

SET @Var = REPLACE(@Var,’ ‘,”)

 

— Substituir o separador por uma tag

SET @Var = REPLACE(@Var,’,’,'</i><i>’)

 

— Colocar as tags iniciais

SET @Var = ‘<e><i>’ + @Var + ‘</i></e>’

 

— Converte para XML

SET @xml = CAST(@Var AS XML)

 

— Retorna os valores em formato tabular

SELECT t.c.value(‘.’,’char(3)’)  FROM @xml.nodes(‘/e/i’) T(c)

 

4-      Exemplo – Removendo – Registros Duplicados:

Create Table #prod

(Product_Code Varchar(10),

Product_Name Varchar(100))

 

INSERT INTO #prod(Product_Code, Product_Name)

VALUES (‘123′,’Product_1’)

 

INSERT INTO #prod(Product_Code, Product_Name)

VALUES (‘234′,’Product_2’)

 

INSERT INTO #prod(Product_Code, Product_Name)

VALUES (‘345′,’Product_3’)

 

INSERT INTO #prod(Product_Code, Product_Name)

VALUES (‘345′,’Product_3’)

 

INSERT INTO #prod(Product_Code, Product_Name)

VALUES (‘456′,’Product_4’)

 

INSERT INTO #prod(Product_Code, Product_Name)

VALUES (‘567′,’Product_5’)

 

INSERT INTO #prod(Product_Code, Product_Name)

VALUES (‘678′,’Product_6’)

 

INSERT INTO #prod(Product_Code, Product_Name)

VALUES (‘789′,’Product_7’)

 

SELECT * FROM #prod;

 

With Dups as

(

Select *, Row_Number() over (partition by Product_Code order By Product_Code) as RowNum

from #prod

)

 

Delete from Dups where rownum > 1;

 

5-      Exemplo –Diversas maneiras de utilizar valores Nulos:

Declare @String VarChar(100)

 

Set @String=”

Select IsNull(@String,’Imagem.jpg’)

 

Set @String=Null

Select IsNull(@String,’Imagem.jpg’)

 

Select Case @String

When ” Then ‘Teste’

Else ‘Imagem.jpg’

End As String

 

6-      Exemplo – Liberando Permissão Grant para todas as tables:

Declare @Contador Int,

@Nome_Table VarChar(50),

@Comando VarChar(200)

 

Set @Contador=0

 

Declare Cursor_Tables Cursor For

Select Name from sysobjects

Where xtype=’u’

And    year(crdate)>=2002

Order by name

Open Cursor_Tables

 

While @Contador <=(Select Count(*) From SysObjects Where xType=’U’ And Year(CrDate)>=2002)

Begin

 

Fetch Next From Cursor_Tables

Into @Nome_Table

 

Set @Comando=’Grant Select On ‘+@Nome_Table+’ To Junior’

Exec(@Comando)

Print ‘Table:’+@Nome_Table+’ permissão de Select liberada para usuário:’+System_User

 

Set @Comando=’Grant Insert On ‘+@Nome_Table+’ To Junior’

Exec(@Comando)

Print ‘Table:’+@Nome_Table+’, permissão de Insert liberada para usuário:’+System_User

 

Set @Comando=’Grant Update On ‘+@Nome_Table+’ To Junior’

Exec(@Comando)

Print ‘Table:’+@Nome_Table+’, permissão de Update liberada para usuário:’+System_User

 

Set @Comando=’Grant Delete On ‘+@Nome_Table+’ To Junior’

Exec(@Comando)

Print ‘Table:’+@Nome_Table+’, permissão de Delete liberada para usuário:’+System_User

 

Set @Comando=’Grant References On ‘+@Nome_Table+’ To Junior’

Exec(@Comando)

Print ‘Table:’+@Nome_Table+’, permissão de References liberada para usuário:’+ System_User

 

Print ‘————————————————//————————————–‘

Set @Contador=@Contador+1

End

 

CLOSE Cursor_Tables

DEALLOCATE Cursor_Tables

 

7-      Exemplo – Encontrando – Colunas com o mesmo nome em Diversas Tabelas:

create table t1

(codigo int)

 

create table t2

(codigo int)

 

— Consultando através do relacionamento entre sys.tables e sys.columns —

select name from sys.tables

where object_id in (select object_id from sys.columns where name = ‘codigo’)

 

— Consultando através do relacionamento entre sys.tables e sys.syscolumns —

select name from sys.tables

where object_id in (select id from sys.syscolumns where name = ‘codigo’)

 

8-      Exemplo – Obtendo o último dia do mês:

 DECLARE @Mes Int,

@Ano Int,

@DataFinal Date

 

Set @Mes = Month(GetDate())

Set @Ano = Year(GetDate())

 

Set @DataFinal = DATEADD(YEAR, @Ano – 1900, DATEADD(MONTH, @Mes, 0)) – 1

 

SELECT CONVERT(VARCHAR, @DataFinal, 103) AS [Último dia de um determinado mês]

GO

 

9-      Exemplo – Realizando Auditoria – In Live:

SELECT [Spid] = session_Id

, ecid

, [Database] = DB_NAME(sp.dbid)

, [User] = nt_username

, [Status] = er.status

, [Wait] = wait_type

, [Individual Query] = SUBSTRING (qt.text,

er.statement_start_offset/2,

(CASE WHEN er.statement_end_offset = -1

THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2

ELSE er.statement_end_offset END –

er.statement_start_offset)/2)

,[Parent Query] = qt.text

, Program = program_name

, Hostname

, nt_domain

, start_time

FROM sys.dm_exec_requests er

INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid

CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt

WHERE session_Id > 50              — Ignore system spids.

AND session_Id NOT IN (@@SPID)     — Ignore this current statement.

ORDER BY 1, 2

 

10-   Exemplo – Obtendo – Versão do SQL Server + EngineEdition:

Select Case SERVERPROPERTY(‘EngineEdition’)

When 1 Then ‘SQL Server Personal or Desktop Engine’

When 2 Then ‘SQL Server Standard’

When 3 Then ‘SQL Server Enterprise’

When 4 Then ‘SQL Server Express’

End AS Edição,

SERVERPROPERTY(‘LicenseType’),

SERVERPROPERTY(‘NumLicenses’)

 

SELECT  SERVERPROPERTY(‘servername’) As “Nome do Servidor”,

SERVERPROPERTY(‘productversion’) As Versão,

SERVERPROPERTY (‘productlevel’) As “Service Pack”,

SERVERPROPERTY (‘edition’) As Edição,

@@Version As “Sistema Operacional” 

Anúncios

Sobre 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. 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. 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. 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, bem como, Professor Titular na Fatec São Roque. 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ções e Reconhecimentos: Microsoft MVP, MCC, MSTC e MIE.
Esse post foi publicado em Dicas, Material de Apoio, Mundo SQL Server, Scripts, Short Scripts, SQL Server, VIRTUAL PASS BR e marcado , , , , , , . Guardar link permanente.

6 respostas para Short Scripts – Novembro 2012

  1. Pingback: Material de Apoio – SQL Server « Alex Souza

Deixe um comentário

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