SQL GO!!!

select 'Blog focado em SQL Server' from blog where nome ='SQLGO.wordpress.com'

Arquivos da Categoria: MSSQL2008

Auto Refresh Reporting Services

Hoje venho trazer para vocês uma dica rápida!

Como atualizar o seu relatório automaticamente pelo SSRS, segue o passo a passo:

Clique no relatório (.rdl), e aperte F4 ou abra a aba propriedades.

Dentro do grupo “Other” existe uma opção AutoRefresh, no meu caso abaixo eu defini para 60 segundos.

Veja a imagem abaixo:

Imagem

E pronto!

Simples, fácil e extremamente útil!

 

Até a próxima!

 

MCTS SQL Server 2008, yay!

Essa semana tem sido muito bacana. Teve a Semana de SQL Server com palestras muito boas com organização da Andressa e outros membros do Virtual PASS BR.

 Além disso, eu e a Andressa passamos na prova para MCTS SQL Server 2008, sendo a minha de administração (70-432 -Implementation and Maintenance) e a dela de desenvolvimento (70-433 – Database Development). Estamos felizes pelo resultado do nosso esforço e estudo. Mas não pararemos por aí! Ainda tem MCITP Administrator, Developer e BI. Muito estudo pela frente, então vamos continuar. Está apenas começando! =D

SSIS – Entendendo os níveis de proteção do pacote

Antes de começar a escrever, gostaria de agradecer a presença das pessoas que participaram das nossas palestras sobre extração, transformação e carga de dados com SQL Server Integration Services na Semana de SQL Server, que está sendo promovida pela Virtual PASS BR.

Na palestra, eu fiz um overview do SQL Server Integration Services – SSIS e falei um pouquinho de uma propriedade de segurança chamada Nível de Proteção. Então resolvi falar um pouquinho mais, pois pode ser um problema quando for feito  o deploy do ambiente de desenvolvimento para produção.

Nível de Proteção do pacote

Como vocês podem ver na imagem acima, existem seis níveis de proteção que podem ser atribuídos para a segurança do pacote:

  • Don’t Save Sensitive: Não salva valores confidencias. Substitui os valores confidenciais do pacote por espaços em branco. Como não há criptografia, é necessário que esses valores sejam informados por outro usuário (diferente do criador do pacote) para que pacote seja executado/alterado.
  • Encrypt Sensitive With User Key: Criptografa SOMENTE os valores confidencias baseado no perfil do usuário criador do pacote. Se outro usuário abrir o pacote, esses valores confidencias precisarão ser informados para que o pacote seja executado/alterado.
  • Encrypt All With User Key: Criptografa TODO o pacote com o perfil do usuário criador do pacote. Somente esse usuário consegue modificar ou executar o pacote. Ocorrerá um erro se outro usuário tentar executar ou abrir o pacote no BIDS.
  • Encrypt Sensitive With Password: Criptografa SOMENTE os valores confidenciais do pacote  com uma senha. Para que os outros usuários possam executá-lo ou alterá-lo, é necessário saber a senha. Sem a senha, o pacote é aberto sem os dados confidencias e nada poderá ser feito.
  • Encrypt All With Password: Criptografa TODO o pacote com senha. Sem a senha, outro usuário não pode acessar ou executar o pacote.
  • Server Storage: A proteção é feita através de funções do banco de dados do SQL Server. Somente funciona se o pacote for armazenado no banco de dados msdb. Portanto, essa proteção não funciona para File System.

Por padrão, o pacote é criado com o nível de proteção Encrypt Sensitive With User Key, que pode ser utilizada para ambiente de desenvolvimento. Para fazer deploy para o ambiente de produção, é preciso alterá-lo para que não dependa da chave do usuário que desenvolveu. Nesse caso, pode-se aplicar Encrypt Sensitive With Password ou Encrypt All With Password. Como o pacote utilizará uma senha para poder executar ou dar manutenção, é FUNDAMENTAL de passar aos demais membros da sua equipe.

[]’s

Socorro Vieira

 

 

 

Cast e Convert

 

Para trabalhar com a conversão de dados é necessário que os tipos de dados sejam compatíveis entre si, como por exemplo, o numero 1 pode ser representado como smallint ou como bigint.

Cast é uma função do padrão ANSI e Convert é uma função do engine do SQL Server. Convert pode ser utilizado para formatação de valores do tipo datetime e money.

 

Sintaxe

Cast – CAST (expression AS data_type [ (length ) ] )

Convert – CONVERT (data_type [ (length ) ] ,expression [ ,style ] )

 

Conversão implícita – O engine do Sql Server realiza a conversão de forma automática sem especificar a função Cast ou Convert.

 

DECLARE @Num1 AS INT = 10000000,@Num2 AS TINYINT=3

–O SQL Server realizou a conversão automaticamente, o tinyint inicia do 0 ate 255

SELECT @Num1+@Num2

image

 

Conversão explicita – É necessário especificar a função Cast ou Convert.

SELECT GETDATE() AS ‘Valor sem converter’

SELECT CAST(GETDATE() AS TIME) as ‘CAST’

SELECT CONVERT(TIME, GETDATE()) as ‘CONVERT’

 

image

 

A imagem abaixo mostra todas as conversões de tipos de dados explícitas e implícitas que são permitidas para tipos de dados fornecidos pelo sistema SQL Server

 

Data type conversion table

 

Estilos de data e hora

O Convert também pode ser utilizado para formatar dados do tipo datetime e money, nesse caso é necessário especificar a formatação desejada.

 

SELECT CONVERT( VARCHAR, GETDATE(),111) as ‘111’

SELECT CONVERT( VARCHAR, GETDATE(),113) as ‘113’

SELECT CONVERT( VARCHAR, GETDATE(),108) as ‘108’

 

image

 

Lista de estilos disponíveis para campos do tipo datetime.

 

image

 

Saiba mais

CAST e CONVERT (Transact-SQL)

 

[]’s

Andressa Martins

Usando o comando MERGE

 

Um dos novos comandos do SQL Server 2008 é o merge, com esse comando podemos comparar registros entre duas fontes de dados (origem e destino). Você pode utilizar as ações de Insert, Update e Delete baseados no resultado da comparação entre as duas fontes.

 

Sintaxe:

INTO <target_table>Define a tabela ou view que será a fonte de destino.

AS – Define um alias.
 
USING <table_source> – Define a tabela ou view que será fonte de origem, baseado na condicao de merge da tabela destino com a tabela de origem.
 
ON <merge_search_condition>Define as condições de “Join” da tabela destino com a tabela origem.
 
WHEN MATCHED THEN – Define a ação a ser realizada quando há linhas na fonte de destino origem que correspondem com a fonte de origem.
 
WHEN NOT MATCHED [ BY TARGET ] THEN – Define a ação a ser realizada quando não há linhas da fonte de origem que correspondem com a fonte de destino. 
 

WHEN NOT MATCHED BY SOURCE THEN Define a ação a ser realizada quando há linhas na fonte de destino, mas não há linhas correspondentes na fonte de origem.

 

Exemplo

CREATE TABLE #Tabela1 ( Nome VARCHAR (100)

                                       , Cadastro DATETIME

                                       , Alteracao DATETIME

                                       , Ativo BIT)

INSERT #Tabela1

VALUES (‘Andressa’, GETDATE(), NULL, 1),

            (‘Joao’, GETDATE(), NULL, 1),

            (‘Maria’, GETDATE(), NULL, 1),

            (‘Ana’, GETDATE(), NULL, 1)

CREATE TABLE #Tabela2 ( Nome VARCHAR(100)

                                       , Twitter VARCHAR(100))

INSERT #Tabela2

VALUES (‘Andressa’,‘@dre_martins’),

            (‘Marieta’,‘@Marieta’),

            (‘Joaquim’,‘@Joaquim’),

            (‘José’,‘@jose’)

SELECT * FROM #Tabela1

SELECT * FROM #Tabela2

 
 

image

Agora vamos ao comando merge:

 

MERGE #Tabela1 AS Destino

USING #Tabela2 AS Origem

ON Destino.Nome = Origem.Nome

— Há registro no destino e na origem

WHEN MATCHED

THEN UPDATE SET Ativo = 0, Alteracao = GETDATE()

–Quando não há registro no destino e há na origem

WHEN NOT MATCHED

THEN INSERT (Nome, Cadastro, Ativo) VALUES (Origem.Nome, Getdate(),1)

–Quando  há registro no destino mas não há na origem

–e que sejam diferente de João

 

WHEN NOT MATCHED BY SOURCE AND Nome <>‘Joao’

THEN UPDATE SET Ativo = NULL, Alteracao = GETDATE();

SELECT * FROM #Tabela1

SELECT * FROM #Tabela2

 

Resultado:

image

 

Saiba mais

MERGE (Transact-SQL)

 

[]’s

Andressa Martins

WebCast – Projetando um banco de dados com Microsoft SQL Server 2008

Pessoal,

Quero agradecer a presença dos mais de 110 participantes no webcast, foi uma experiência incrível para todas nós.

Conforme prometido segue o material usado no webcast, caso tenham perguntas podem mandar para o nosso sqlgo@hotmail.com que teremos o maior prazer em respondê-los.

Tipo de dados numéricos, qual usar?

O SQL Server nos oferece muitas opções de dados dos tipos numéricos mas que raramente são utilizados. Quando projetamos um banco de dados devemos nos atentar ao tamanho dos campos pois isso certamente irá causar um crescimento desnecessário na base de dados.

 

 INT, SMALLINT, TINYINT, BIGINT

 

Tipo de dados

Range

Tamanho

BIGINT

-9.223.372.036.854.775.808 a 9.223.372.036.854.775.808

8 bytes

INT

-2.147.483.648 a 2.147.483.647

4 bytes

SMALLINT

-32,768 a 32,367

2 bytes

TINYINT

0 a 255

1 byte

 

MONEY,SMALLMONEY

Tipo de dados

Range

Tamanho

MONEY

-922.337.203.685.477,5808 a 922.337.203.685.477,5807

8 bytes

SMALLMONEY

– 214.748,3648 to 214.748,3649

4 bytes

FLOAT, REAL

Tipo de dados

Range

Tamanho

FLOAT (N)

– 1,79E+308 a -2,23E-308, 0 e 2,23E-308 a 1,79E+308

Depende do valor de n

SMALLMONEY

– 3,40E + 38 a -1,18E – 38, 0 e 1,18E – 38 a 3,40E + 38

4 bytes

Valor n

Precisão

Tamanho

1-24

7 dígitos

4 bytes

25-53

15 dígitos

8 bytes

NUMERIC, DECIMAL

Tipo de dados

Range

Tamanho

NUMERIC

– 10^38 +1 a 10^38 – 1

8 bytes

DECIMAL

– 10^38 +1 a 10^38 – 1

4 bytes

Precisão

Tamanho

1-9 dígitos

5 bytes

10-19 dígitos

9 bytes

20-28 dígitos

13 bytes

29-38 dígitos

17 bytes

Saiba mais em:

Numeric Types