Think Think .Net
Diego Nogare [MVP | MCT | MCITP | MCTS | MCP | INETA BR]

Tipos de conexões do SSIS no SQL Server 2008 R2

segunda-feira, 24 maio 2010 08:03 by Nogare

Fala galera, estou escrevendo este post sobre a diferença dos tipos de conexões que temos no SQL Server Integration Services (ou SSIS para os intimos, rs) porque nas ultimas 3 semanas me perguntaram sobre isso 2 vezes. Então para poder tirar a duvida de quem precisar, agora fica mais facil.

Quando iniciamos um novo projeto de SSIS no BIDS (BI Development Studio) podemos identificar algumas pastas lógicas na Solution Explorer do projeto. As duas pastas que mais são utilizadas é a Data Sources e a SSIS Packages. A pasta SSIS Packages é onde os pacotes contendo o Workflow de atividades que trabalharão no processo de ETL são organizados logicamente, e a pasta Data Sources é onde as conexões globais ficam armzenadas.

Neste exemplo, vou utilizar o pacote chamado Package.dtsx que já vem criado na pasta SSIS Packages e criar os dois tipos de conexões, uma local exclusiva para o pacote e outra global para todos os pacotes do projeto. Veja as pastas e o pacote default:

clip_image001

Para ver as conexões, é preciso adicionar um controle DataFlow dentro do ControlFlow no pacote, isso pode ser feito arrastando o controle da toolbox para a área de design do ControlFlow. Depois de adicionado o DataFlow, clicando 2 vezes nele, a aba superior muda e permite editar as configurações do DataFlow selecionado. Veja a imagem com o controle DataFlow dentro do Controlflow. E do lado a imagem do DataFlow ainda vazio depois de receber o duplo clique.

clip_image002clip_image003

O controle DataFlow possui uma área de Connection Manager na região inferior da área de design. Nesta área ficam todas as conexões locais do pacote, vamos adicionar uma nova conexão clicando com o botão direito e indo até o item específico da conexão que deseja realizar.

clip_image004

Neste exemplo, vamos adicionar uma “New ADO.NET Connection…”. Depois de selecionar este ítem no menu, uma tela com todas as conexões que estão em cache na máquina de desenvolvimento são apresentadas. Do lado esquerdo são as conexões e do lado direito são os detalhes do que foi selecionado.

clip_image005

Será criada uma “New…” conexão, para apontar para o SQL Server 2008 R2 em uma conexão local e vamos ver como ela fica apresentada no Connection Managers do pacote.

clip_image006

Após a configuração, mais um item aparece na lista das conexões em cache, é nesta lista que selecionaremos a conexão que será utilizada para trabalhar no Workflow sendo uma origem ou um destino no processo que será executado.

Após a seleção, a conexão ficará exposta na Connection Managers do pacote, veja que o nome não é muito amigavel, é possível renomear clicando com o botão direito na conexão e apontando para “Rename” ou através do atalho F2. A mudança do nome não impacta o cache de conexões, somente o item que está na sessão de Connection String. Vou renomear esta conexão para “SQL 2008 R2 – Local”.

clip_image007

Agora que já criamos uma conexão local, vamos criar uma conexão global para o projeto. Para isso, vá até a Solution Explorer, encontre a pasta Data Sources, clique com o botão direito na pasta e aponte para New Data Source…

clip_image008

Quando a tela é aberta, reparamos que é uma tela que já conhecida, é a tela de cache de conexões. Como é só pra exemplo, vou selecionar qualquer uma delas diferente da selecionada anteriormente. A unica diferença é que no final escolhemos um nome para a conexão. Neste caso, como estou me conectando a uma conexão do SQL Azure Database,  vou chamar de “SQL Azure – Global”.

clip_image009

Veja que agora temos dois lugares que podem existir conexões. As conexões locais e as globais. As locais foram aquelas criadas diretamente no pacote e as globais são essas criadas na pasta Data Sources do projeto. Agora é chegada a hora de adicionar a conexão global ao pacote e utilizá-la como e quando for necessário. Para isso, clique com o botão direito na área de Connection Managers e aponte para “New Connection From Data Source…” isso permitirá selecionar qualquer conexão que esteja na pasta lógica Data Sources da Solution Explorer. Após adicionado, repare que o ícone das conexões são diferentes, isso serve justamente para identificar visualmente qual conexão é de cada escopo. O cilindo com uma conexão em baixo significa que é uma conexão local enquanto o cilindo com quatro setas apontando para todos os lados significa uma conexão global.

clip_image010clip_image011

As duas principais diferenças entre os dois tipos de conexões, é que quando utilizamos conexões locais elas ficam somente nos pacotes e se for necessário utilizar a mesma conexão em outro pacote, ela terá que ser configurada novamente nele, já na conexão global é só utilizar a referência do Data Sources em todos os pacotes. A outra diferença é que se for preciso alterar alguma conexão, alterar a que está no Data Sources lhe dá o trabalho de realizar isso somente em um lugar e todas as referências são automaticamente atualizadas. Já quando se tem uma conexão em cada pacote, se você possuir 20 pacotes em seu projeto, terá que alterar 20 vezes a mesma coisa!

Comparando SQL Server e SQL Azure Database – prt 6

sábado, 6 março 2010 10:12 by Nogare

Fala galera, é sexta-feira de madrugada minha esposa está tomando banho e eu estou escrevendo este post. É o sexto da série e provavelmente o útimo que escreverei com minhas idéias, a partir de agora vou esperar as duvidas de vocês para escrever mais posts sobre esses comparativos.

Neste post, vou falar sobre Alta Disponibilidade e Escalabilidade.

Quando se pensa em Alta Disponibilidade, estamos pensando em 24X7 (24horas 7 dias por semana). A Plataforma Azure é baseada em SQL e Windows Server, e é flexivel o bastante para para variar com relação à carga ou uso. O serviço replica os dados em diversos servidores diferentes para manter os dados redundantes e disponíveis para seu negócio, haja o que houver. No caso de um dos servidores cair, o Azure automaticamente faz o loadbalance e aponta para outro server.

Já com relação à escalabilidade, esse é um ponto bem positivo pra Plataforma Azure no ponto de vista da facilidade de se escalar (aumentar o desempenho) sua própria solução. No SQL Server, depois de particionar seus dados, a escalabilidade é automática e o banco vai crescendo de acordo com sua necessidade. Pela forma de licenciamento, você só pagará pelo que armazenar “economizando dinheiro”, e caso precise fazer um downgrade (diminuir o desempenho) de seu ambiente, é possivel fazer quando achar necessário.

Bom, foram 6 posts sobre diversas informações relacionadas à SQL Server e SQL Azure Database. Com certeza terão assuntos que vocês gostariam que fossem discutidos e não foram. Deixo o espaço dos comentários ou o meu twitter @DiegoNogare aberto para que possam enviar suas dúvidas e terei o maior prazer em responder.

Comparando SQL Server e SQL Azure Database – prt 5

terça-feira, 2 março 2010 02:34 by Nogare

Fala galera, estou voltando a postar depois do MVP Summit 2010…

Na comparação de hoje falarei sobre o modelo de dados relacional.

O SQL Azure será bem familiar à todos os DBAs e DEVs (de banco) no quesito de armazenamento, porque é bem parecido com o SQL Server on-premise, usando T-SQL. Por conceito, o SQL Azure é como uma instância do SQL Server, só que com algumas restrições (vocês se lembram, né?!).

Em cada servidor de SQL Azure, você pode criar diversos bancos de dados, e em cada banco pode criar várias tabelas, views, stored procedures, índices, e vários outros objetos. Este modelo de dados faz um bom uso do design e codificação dos bancos que já temos on-premises e simplifica o processo de migração para a nuvem por serem bem similares e suportarem quase tudo um do outro.

Só lembrando que o SQL Azure Database são servidores virtuais e não correspondem exatamente como um SQL Server local (que é físico)! Então não tentem ter o mesmo desempenho, é muito pouco provável que consiga chegar próximo!

Se alguém tiver duvida sobre alguma coisa entre o SQL Azure e o SQL Server, me mande que eu terei um prazer enorme em responder.

Comparando SQL Server e SQL Azure Database – prt 4

quinta-feira, 18 fevereiro 2010 17:00 by Nogare

Fala galera, diretamente do MVP Summit 2010, vou postar mais algumas coisinhas sobre a comparação entre SQL Server e SQL Azure Database.

No post de hoje, vou falar sobre as Features permitidas e mais um pouquinho do código T-SQL não suportado.

Falando das Features, vale lembrar que a plataforma Azure é gerenciada através de serviços, logo não temos acesso direto “ao servidor”, somente ao que é liberado através dos serviços. Ótimo, todo mundo lembrou disso. Então já que lembramos desse detalhe, agora vamos lembrar de outro, o SQL Azure Database não suporta todas as Features e Datatypes que o SQL Server local suporta, por exemplo o Analysis Services, Replication, Reporting Services e Service Broker não são suportados pelo SAD ainda, mas pode ser que estas Features sejam implantadas. Como a própria plataforma Azure cuida da parte física (hardware), algumas configurações que manipulam diretamente a questão de hardware do servidor estão bloqueadas, por exemplo o Resource Governor ou algumas configurações de DDL (Data Definition Language). Hah, também não é permitido utilizar o SQL Profiler ou o DB Tuning Advisor.

Outros códigos T-SQL não suportados são aqueles que fazem referência à algum filegroup ou caminho físico. Dependendo do código, ele pode até ser considerado “parcialmente” suportado. Bizzaro! rss

Comparando SQL Server e SQL Azure Database – prt 3

terça-feira, 16 fevereiro 2010 00:00 by Nogare

Fala galera, estou escrevendo este post de dentro do avião, indo pro MVP Summit, quando chegar eu conecto em algum WiFi e publico (só pra constar! rss).

Bom, continuando com essa série de comparações entre SQL Server e SQL Azure Database, vou falar sobre o código T-SQL suportado na plataforma Azure. É claro, algumas coisas podem mudar, mas estes códigos eu já testei.

T-SQL suportados:

Constantes / Constraints / Cursores / Índices (gerenciamento e rebuild) / Tabelas temporárias locais (com 1 #) / Stored Procedures / Gerenciamento de Estatísticas / Transações (Begin e End) / Triggers / joins de tabelas e de variáveis do tipo table / Create ou Drop Database / Create, Alter ou Drop Table / Create, Alter ou Drop usuários e logins / Views.

Algumas coisas que testei, mas não tive sucesso, logo entendo como não suportado:

CLR / Database Mirroring / Gerenciamento de Filegroup / Tabela temporária global (com 2 ##) / Service Broker

Bom, esta é a terceira parte da série, vamos ver se posto mais alguma coisa diretamente do MVP Summit 2010!