Archive | Sql Server RSS for this section

Lendo Excel sem DBLink no SQL Server 2008

Abaixo você confere como fazer consultas nas tabelas do Excel

-- Com o script abaixo você não precisa criar um DBLink
-- para acesso ao Excel.

SELECT * FROM
  OPENROWSET('Microsoft.Jet.OLEDB.4.0',
    'Excel 8.0;Database=c:arquivo.xls', Analise$);

--Caso Ad Hoc não esteja configurado execute o comando abaixo

SP_CONFIGURE 'show advanced options', 1;
RECONFIGURE;

SP_CONFIGURE 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;

Script de backup SQL Server

Com o script abaixo você poderá realizar o backup do seu DB

GO
-- Altere conforme o nome do DB e local desejado
USE AdventureWorksLT2008R2;
GO

BACKUP DATABASE AdventureWorksLT2008R2
TO DISK = 'C:SQLServerBackupsAdventureWorksLT2008R2.Bak'
   WITH FORMAT,
      MEDIANAME = 'Z_SQLServerBackups',
      NAME = 'Full Backup of AdventureWorksLT2008R2';
GO

Anular IDENTITY para Inserir dados SQL Server

USE SEUDATABASE

SET IDENTITY_INSERT [PortalIndicadores].[dbo].GRAFICO ON
GO
  INSERT INTO GRAFICO ([ID],[OBJETO],[TITULO],[SUBTITULO],[AJUDA])
       VALUES ('1','101','Tit','SUBT','AJUDA')
  INSERT INTO GRAFICO ([ID],[OBJETO],[TITULO],[SUBTITULO],[AJUDA])
       VALUES ('2','102','Tit','SUBT','AJUDA')

-- Disable IDENTITY_INSERT.
SET IDENTITY_INSERT GRAFICO OFF
GO

-- Enable IDENTITY_INSERT.
SET IDENTITY_INSERT [PortalIndicadores].[dbo].PAGINA_GRAFICO ON

GO
   -- Insert the specified identity row using a column list.
   INSERT INTO PAGINA_GRAFICO (ID, ID_PAGINA, ID_GRAFICO, STATUS)
                       VALUES ('321','89','337','1')
   INSERT INTO PAGINA_GRAFICO (ID, ID_PAGINA, ID_GRAFICO, STATUS)
                       VALUES ('320','90','336','1')

-- Disable IDENTITY_INSERT.
SET IDENTITY_INSERT PAGINA_GRAFICO OFF

GO

Hash MD5 SQL Server

Sintaxe:

  • HASHBYTES ( ”, { @input | ‘input’ } )
  • ::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512
GO
 -- Executa o select a seguir e verifique como ficará a senha
 SELECT CONVERT(VARCHAR(MAX), HASHBYTES('MD5', 'Su4S3nh@'), 2)

 -- O exemplo abaixo atualiza a senha de um usuário existente
 UPDATE [DATATABSE].[dbo].[TABELA_USUARIO]
    SET [Col_Password] = CONVERT(VARCHAR(MAX), HASHBYTES('MD5', 'Su4S3nh'), 2)
  WHERE [Col_UserId]   = 32
GO

Pesquisar Objetos do Banco SQL Server

Acessando o banco de dados onde desejo a pesquisa

USE [Nome do Banco]
GO

--------------------------------------------------------------------
-- Iniciando a pesquisa nas tabelas de sistemas
--------------------------------------------------------------------
--o campo do TYPE armazena o tipo do objeto a ser localizado, onde:
--U => Tabela Usuário
--S => Tabela de sistema
--P => Procedure
--V => View
--F => Function
--------------------------------------------------------------------
--Referencia SysObjects TYPES: https://goo.gl/HFdJAq
--------------------------------------------------------------------

SELECT A.NAME,
       A.TYPE,
       B.TEXT
  FROM SYSOBJECTS  A (nolock) JOIN SYSCOMMENTS B (nolock)
    ON A.ID = B.ID
WHERE B.TEXT LIKE '%%'
  AND A.TYPE = 'P'
ORDER BY A.NAME

-- B.TEXT: Informação a ser procurada no corpo da P, F ou V
-- A.TYPE: Tipo de objeto a ser localizado

--------------------------------------------------------------------
-- Aqui você consegue procurar pelo nome da coluna
--------------------------------------------------------------------

SELECT
       T.name AS Tabela,
       C.name AS Coluna
  FROM sys.sysobjects AS T (NOLOCK)
 INNER JOIN sys.all_columns AS C (NOLOCK)
    ON T.id = C.object_id AND T.XTYPE = 'U'
 WHERE C.NAME LIKE '%NomeDoCampo%'
 ORDER BY T.name ASC

GO

Chave Composta SQL Server

Aqui criaremos uma tabela para teste.

CREATE TABLE [dbo].[DADOS](
        [ID] [int] NOT NULL,
        [LETRA] [nvarchar](255) NOT NULL,
        [NOME] [nvarchar](70) NULL
)

Adicionando chave primaria composta para tabela criada anteriormente.

--Chave Composta (CLUSTERED)
ALTER TABLE [DADOS] ADD CONSTRAINT [PK_CDADOS]
PRIMARY KEY CLUSTERED(ID, LETRA)

Inserindo dados para teste.

--Inserção de dados
INSERT INTO [DADOS](ID, LETRA) VALUES(1000,'A')
INSERT INTO [DADOS](ID, LETRA) VALUES(1000,'B')

Caso já exista chave primaria em uma tabela já existente, excluir a configuração de chave primaria para criar a chave composta.

--Remove chave composta da tabela
ALTER TABLE [DADOS] DROP CONSTRAINT [PK_CDADOS]

#CopieColeExecute

Condicional SQL Server (CASE)

CASE WHEN THEN SQLServer

-- CASE WHEN THEN SQLServer
SELECT A.ID_CARGO,
	  CASE A.ID_CARGO
		   WHEN '1' THEN 'COPEIRA II'
		   WHEN '2' THEN 'ANALISTA DA CENTRAL ATEN'
		   WHEN '3' THEN 'ANALISTA SUPORTE TECNICO'
		   WHEN '4' THEN 'DIRETOR ADMINISTRATIVO'
		   WHEN '5' THEN 'DIR.ADJUNTO DE PATRIMONI'
		   ELSE A.DESC_CARGO
	  END AS DESCRICAO_CARGO
 FROM D_CARGO A
ORDER BY A.ID_CARGO

Concatenando SQL Server

Concatenando Caracteres no SQL Server
Removendo último caractere de um VARCHAR

No código abaixo faço uma lógica para extrair todos os anos a partir do ano de 2010 até 2014 através de um laço WHILE concatenando os anos e separando por virgula. No Exemplo também mostro como remover o ultimo carácter.

DECLARE @w_ano_loop  NUMERIC,
	@w_semestre  VARCHAR(3),
	@w_juntatudo VARCHAR(800)

        SET @w_ano_loop  = 2010
        SET @w_semestre  = '1,2'
        SET @w_juntatudo = ''

WHILE @w_ano_loop != CONVERT( NUMERIC,DATEPART(YEAR, GETDATE())+1 )	BEGIN
	SET @w_juntatudo = @w_juntatudo + convert(varchar,@w_ano_loop)+','
	SET @w_ano_loop  = @w_ano_loop + 1
END

SELECT LEFT(@w_juntatudo,LEN(@w_juntatudo)-1) AS [IN_ANO],
	   @w_semestre AS [IN_SEM]
Resultado

Resultado

 

 

 

#CopieColeExecute

Função de data SQL Server

(Dias/Meses Vividos, Idade Atual, Idade 31/12)

Neste post entrego uma solução rápida para obter idade atual, dias de vida, meses de vida e idade até o final do ano.

Enjoy!

DECLARE @DATA_NASCIMENTO VARCHAR(10) = '1987-07-06',
        @DATA_ATUAL DATE = GETDATE()

SELECT
	  DATEDIFF(DAY,@DATA_NASCIMENTO,@DATA_ATUAL)AS DIASV_VIVIDOS,
	  DATEDIFF(MONTH,@DATA_NASCIMENTO,@DATA_ATUAL) AS MESES_VIVIDOS,
	  CASE WHEN
		 DATEPART(MONTH,@DATA_NASCIMENTO)<= DATEPART(MONTH,@DATA_ATUAL) AND
		 DATEPART(DAY,@DATA_NASCIMENTO)  <= DATEPART(DAY,@DATA_ATUAL)
	  THEN
		(DATEDIFF(YEAR,@DATA_NASCIMENTO,@DATA_ATUAL))
	  ELSE
		(DATEDIFF(YEAR,@DATA_NASCIMENTO,@DATA_ATUAL))- 1
	  END AS IDADE_ATUAL,
		 DATEDIFF(YEAR,@DATA_NASCIMENTO,@DATA_ATUAL) AS IDADE_3112

#CopieColeExecute

Log de Transação SQL Server

Informa o percentual de uso do log de transação de todos os banco de dados.

-- Percentual de uso de log
dbcc sqlperf (logspace)
Sql Server

Sql Server

#CopieColeExecute