SQL GO!!!

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

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

 

 

 

O que você quer ver na demo de SSIS??

Pessoal,

 

Eu e a Socorro estamos elaborando nossos webcasts e pensamos em fazê-lo de uma forma um pouco diferente, ao invés de criá-lo com o que achamos interessantes, gostariámos de montar as demos de acordo com os problemas que vocês encontram no dia a dia.

E ai, o quê você gostaria de aprender mais sobre o SSIS?

 

Deixe um comentário com sua dúvida/sugestão!

 

 

Andressa Martins

Semana de webcasts Sql Server

 

O grupo Virtual PASS BR irá realizar em agosto, do dia 01 ao 06, uma semana com dois webcasts diários sobre SQL Server.

Conto com a presença de todos vocêis heim!

 

Veja a lista completa de webcasts:

01/08

• 20hs – Desmistificando Business Intelligence – Por onde iniciar e quais são os principais desafios de uma solução de BI (Viviane Ribeiro)   (NEW)

• 21hs – Era uma vez um reino de trevas… Denali + Windows Functions… e viveram felizes para sempre! (Fabiano Amorim)
• 22hs – Projeto Crescent – A Próxima Geração de Relatórios (Felipe Ferreira)

02/08
• 21hs – 10 coisas que todo desenvolvedor deveria saber sobre SQL Server (Marcos Freccia)
• 22hs – BI Semantic Model e PowerPivot for Excel vNext (Thiago Zavaschi)

03/08
• 21hs – Data Collector: arquitetura, funcionamento e utilizações (Luan Moreno)
• 22hs – Primeiro contato com as ferramentas de BI do SQL Server – SSIS + SSAS + SSRS – (Diego Nogare)

04/08
• 21hs – Extraindo, Transformando e Carregando Dados com o SQL Integration Services – Parte 1 (Socorro Vieira)
• 22hs – Extraindo, Transformando e Carregando Dados com o SQL Integration Services – Parte 2 (Andressa Martins)

05/08
20hs – Gerenciando SQLServer Workloads com Resource Governor (Rodrigo Crespi)*
• 21hs – Evitando erros comuns na elaboração de código T-SQL (Gustavo Maia Aguiar)

 

06/08
• 21hs – Disponibilidade de Banco de Dados com Replicação e Database Mirroring (Junior Galvão)
• 22hs – SQL Server x SQL Azure, o que preciso saber?! (Marcondes Alexandre)

A primeira sessão dos dia 01 e 05 será as 20hs e não as 21hs como nos outros dias, cuidado para não perder o horário!

Se inscreva aqui!

Galerinha, nada de ficar assistindo novela em agosto, vamos assistir os webcasts!

Como utilizar o For Loop Container e o ExecuteSQL Task no Integration Services

 

Nesse vídeo são abordadas as tasks: For Loop Container e ExecuteSQLTask.

Como utilizar o Foreach Loop Container e o Script Task no Integration Services

 

Nesse vídeo são abordadas as tasks: Foreach Loop Container e Script Task

 

.

Introdução ao SQL Server Integration Services SSIS

 

Estou trabalhando sobre uma série de vídeos sobre como utilizar algumas task do Integration Services, serão vídeos curtos e totalmente práticos. A ideia inicial é que sejam publicados ao menos três vídeos semanais.

Para iniciar essa série nada melhor do que um vídeo sobre introdução ao SSIS, porém achei um vídeo do Felipe Ferreira e resolvi disponibilizá-lo para vocês.

 

Introdução ao SSIS

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

Utilizando o Document Map no Reporting Services

Document map é um conjunto de links de navegação exibidos no relatório, esses links podem ser definidos manualmente, setando a propriedade DocumentMapLabel do objeto ou dinamicamente como no exemplo que vamos criar nesse post.

Crie um projeto e selecione o template Report como no exemplo abaixo:

image

Adicione um Shared DataSource, clique com o botão esquerdo e selecione a opção Add>>New data source, e configure as propriedades da sua conexão.

Agora clique com o botão direito da pasta  Reports, e selecione a opção Add>>New Item.

image

Defina o DataSource a ser utilizado, como esse item já existe no SharedDataSouces iremos apenas referenciá-lo.

Na aba ReportData clique com o botão direto em DataSource e selecione add New Data Source, na janela que aparecerá selecione a opção Use shared data source reference, e escolha o data source criado anteriormente.

image

Agora que a nossa fonte de dados já está definida vamos criar o data set, você pode definir um shared data set e somente referenciar do mesmo jeito que fizemos com o data source ou pode adicionar um novo, nesse exemplo eu adicionei um novo data set.

Defina a fonte de dados e por fim a query ou a stored procedure que irá retornar os dados.

Você pode fazer o download do banco que utilizei para esse exemplo, o link se encontra no final do artigo.

SELECT     mon.pkIdMontadora
    , mon.Montadora
    , mar.pkIdMarca
    , mar.Marca
    , cat.pkIdCategoria
    , cat.Categoria
    , subc.pkIdSubCategoria
    , subc.SubCategoria
    , m.Modelo
FROM     Modelo AS m
    INNER JOIN SubCategoria AS subc ON m.fkIdSubCategoria = subc.pkIdSubCategoria
    INNER JOIN Marca AS mar ON m.fkIdMarca = mar.pkIdMarca
    INNER JOIN Montadora AS mon ON mar.fkIdMontadora = mon.pkIdMontadora
    INNER JOIN Categoria AS cat ON subc.fkIdCategoria = cat.pkIdCategoria

Eu criei uma tabela agrupada por montadora, marca, categoria e subcategoria.

Após isso vamos iniciar a montagem do nosso document map.

Clique com o botão direito no grupo montadora >> group properties…

image

Você irá visualizar uma tela semelhante à tela abaixo. Na guia Advanced selecione o campo que você deseja que seja exibido no document map, no nosso caso é a montadora.

image

Ao clicar em preview, já conseguimos visualizar o primeiro nível do nosso document map.

image

Vamos adicionar mais alguns níveis a esse document map. repetindo a mesma estrutura que foi realizada para a montadora, porém agora com o campo marca.

Ao finalizar as etapas, teremos dois níveis na hierarquia do document map.

image

Repita o processo para todos os níveis desejados, no meu caso tenho os seguintes níveis:

Montadora

Marca

Categoria

SubCategoria

Modelo (detalhe)

Veja como ficou o resultado após todos os níveis finalizados:

image

Conforme dito no inicio do post, você pode adicionar objetos para o documento map alterado a propriedade DocumentMapLabel com o nome que você deseja que seja exibido.

image

Como podem verificar, os retângulos estão sendo listados juntamente com os grupos da tabela.

image

Clique aqui para fazer o download da base e do exemplo.

Até a próxima!

Andressa Martins

DatabaseCast #9: Mulheres e Banco de dados

 

No nono Episódio do DataBaseCast o tema é "Mulheres e Banco de dados", eu tive a oportunidade de fazer parte desse bate-papo, onde conversamos sobre machismo, família, trabalho e banco de dados.

O PodCast ficou muito bom, caso queira enviar um feedback sintam-se à vontade.

 

Andressa