Mostrando postagens com marcador Integration Services. Mostrar todas as postagens
Mostrando postagens com marcador Integration Services. Mostrar todas as postagens

sexta-feira, 3 de agosto de 2012

Rodar pacotes do SSIS 2012 em modo 32 Bits

Considerando que o driver do Excel para o SSIS ainda tem apenas a versão 32 bits, para realizar importações com o Excel no SSIS é necesário rodar os pacotes em modo 32 bits. Caso isto não seja feito, o seguinte erro pode ocorrer:

Error: The requested OLE DB provider Microsoft.Jet.OLEDB.4.0 is not registered. If the 64-bit driver is not installed, run the package in 32-bit mode. Error code: 0x00000000.
An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered". 

Para realizar esta configuração, clique com o botão direito do mouse sobre o ícone do projeto no solution explorer da interface do SSIS 2012 e clique em Properties. Mude o campo Run64BitRuntime para False.


Mais informações: http://sqlblog.com/blogs/john_paul_cook/archive/2010/03/24/running-32-bit-ssis-in-a-64-bit-environment.aspx

Abs!

quarta-feira, 28 de julho de 2010

The result binding name must be set to zero for full result set and XML results

Sintoma:  Ao direcionar o resultado de um SQL Task no SSIS para uma variável do tipo Object, o SSIS apresenta a mensagem "The result binding name must be set to zero for full result set and XML results".

Causa: Isto ocorreu pois ao relacionar o Result a uma variável, adicionei um nome a propriedade ResultaName, da opção ResultSet.

Resolução: Mudar o ResultName para "0" (zero)

Mais informações: Para mais informações, acesse http://dacosta9.wordpress.com/2009/02/26/execute-sql-task-error-the-result-binding-name-must-be-set-to-zero-for-full-result-set-and-xml-results/

Até a próxima!

 

sexta-feira, 30 de abril de 2010

Erro no SSIS - FTP TASK ("The password was not allowed")

Sintoma: Ao tentar utilizar o FTP TASK do SSIS (Sql Server Integration Services), a task retorna a mensagem "The password was not allowed".

Causa: Uma das premissas do SSIS, diz respeito a segurança e portanto todas as senhas atribuídas aos componentes são perdidas em tempo de execução.

Resolução: A solução para este problema foi criar um Script Task antes da FTP Task onde as propriedades da Task são passadas em tempo de execução através das variáveis. Veja abaixo o código da task:

        public void Main()
        {
            // TODO: Add your code here

            string userName = Dts.Variables["gStrUsuarioPDS"].Value.ToString();
            string password = Dts.Variables["gStrSenhaPDS"].Value.ToString();
            string ftp = Dts.Variables["gStrFTPPDS"].Value.ToString();

            Dts.Connections["FTPConnMngr"].ConnectionString = ftp + ":21";
            object ftpConnectionManager = (object)Dts.Connections["FTPConnMngr"];

            Dts.Connections["FTPConnMngr"].Properties["ServerUserName"].SetValue(ftpConnectionManager, userName);
            Dts.Connections["FTPConnMngr"].Properties["ServerPassword"].SetValue(ftpConnectionManager, password);

            Dts.TaskResult = (int)ScriptResults.Success;
        }



Mais Informações: Para mais informações, leia este artigo.

Até a próxima!

quarta-feira, 14 de abril de 2010

Criando um arquivo TXT com VBScript

Nos antigos pacotes DTS, a única opção de código para os Activex Script Tasks era realmente o VBScript. Recentemente tive que criar um arquivo texto a partir de uma Task, e para tanto, utilizei como base o seguinte código:
Function Main()

    Dim Stuff
    Stuff = "Rodrigo"

    Dim myFSO
    Dim WriteStuff

    myFSO = CreateObject("Scripting.FileSystemObject")
    WriteStuff = myFSO.OpenTextFile("C:\Sistemas\yourtextfile.txt", 8, True)

    WriteStuff.WriteLine(Stuff)
    WriteStuff.Close()

    Main = DTSTaskExecResult_Success
End Function

Até a próxima!

sexta-feira, 9 de abril de 2010

Cannot load the XML configuration file. The XML configuration file may be malformed or not valid

Erro: Ao tentar executar um pacote desenvolvido com o Microsoft Integration Services, utilizando configuração através de arquivo XML, o pacote retornou a mensagem:

Warning: 0x80012011 at "packageName": Cannot load the XML configuration file. The XML configuration file may be malformed or not valid.

SSIS package "PackageName.dtsx" starting.

Error: 0xC001602A at PackageName, Connection manager "FTP Connection": An error occurred in the requested FTP operation. Detailed error description: The password was not allowed


Causa: Este problema ocorre pois o XML tem algumas palavras reservadas, que quando precisamos utilizar como value de alguma tag, devem ser reescritos usando a seguinte regra:

  • '  deve ser escrito ' (abreviação de 'apostrophe')
  • "  deve ser escrito " (abreviação de 'quote')
  • <  deve ser escrito &lt; (abreviação de 'less than')
  • >  deve ser escrito &gt; (abreviação de 'greater than')
  • &  deve ser escrito &amp; (abreviação de 'ampersand')
O problema, analisando mais profundamente, estava em uma Property que apresentava o “&”, gerando os problemas. Onde antes estava:

“...E&;..”

Ficou

“...E&amp;;...”

Até a próxima!

terça-feira, 26 de janeiro de 2010

Problema com JOB de agendamento de pacote DTSX

Consultado por um colaborador em relação a um problema em um JOB do Sql Server 2008, verifiquei o JOB History e verifiquei a seguinte mensagem de erro:

"Executed as user: USR The package execution failed.  The step failed."

Adicionei o role Sysadmin ao server roles do usuário relacionado a execução do pacote e o JOB funcionou.



Até a próxima!

sexta-feira, 16 de outubro de 2009

SSIS Configuration Editor

Recebi o link de um colega de trabalho. O download está disponível no site AgileBI, e pode ser baixado aqui.

O aplicativo permite editar os arquivos *.dtsconfig através de uma interface visual. Excelente para quem não quer se matar no notepad.



Até a próxima!

segunda-feira, 5 de outubro de 2009

Slowly Changing Dimension

Com este artigo, pretendo iniciar algumas matérias relacionadas ao Microsoft Integration Services, o ambiente da Microsoft para operações de ETL, com excelentes ferramentas para aplicações de BI.
Hoje, vamos analisar especificamente, um componente do ambiente Integration Services, denominado Slowly Changing Dimension.

Slowly Changing Dimension é um termo utilizado em teorias de Data Management e Data Warehousing para grupos de dados lógicos como informações de produtos, clientes, etc que mudam lentamente ao longo do tempo.

Slowly Changing Dimension, é bastante utilizado para armazenar alterações em informações que compõe um ambiente de Business Inteligence. Vamos imaginar que um ambiente de BI de uma rede de concessionárias de automóveis armazena informações sobre o histórico de vendas de seus vendedores. Aparentemente uma implementação fácil, porém vamos imaginar que um vendedor é transferido para uma filial em outra cidade, e agora precisamos implementar um relatório de vendas, agrupados por vendedores e filiais, comparando performance de vendas entre os vendedores. Se o vendedor foi transferido de uma filial com um mercado aquecido, para uma filial onde as vendas não são tão fáceis, podemos ter problemas pois em uma análise comparativa entre vendedores, as vendas do vendedor transferido podem parecer absurdamente exagerados em comparação com os outros vendedores.

Para implementar o relatório com precisão, é necessário armazenar a mudança de filial do vendedor e os períodos que ele se manteve em cada filial.

Mas chega de papo, vamos implementar um exemplo de SCD com o Integration Services para que possamos entender melhor esta idéia. Execute o script abaixo, que criará um banco de dados chamado Integração e uma tabela denominada clientes:

CREATE DATABASE Integracao
go

USE Integracao
go

CREATE TABLE Clientes (
id int identity(1,1) primary key,
Nome varchar(255) default NULL,
nuNivel varchar(50) default NULL,
Email varchar(255) default NULL,
Cidade varchar(50) default NULL,
ZipCode varchar(255) default NULL,
Endereco varchar(255) default NULL,
FlStatus varchar(255) default NULL,
DtNascto Datetime default NULL,
)
GO

E Execute o seguinte script para criar alguns registros em nossa tabela:

INSERT INTO Clientes (Nome,nuNivel,Email,Cidade,ZipCode,Endereco,FlStatus,DtNascto) VALUES ('Alan Bishop','9','ligula@amifringilla.org','Fallon','43398','P.O. Box 424, 3532 Cum Street','Divorced','09-08-29');
INSERT INTO Clientes (Nome,nuNivel,Email,Cidade,ZipCode,Endereco,FlStatus,DtNascto) VALUES ('Martin Valencia','5','aliquet@indolorFusce.org','Easthampton','07120','3498 Facilisis St.','Common-Law','09-02-26');
INSERT INTO Clientes (Nome,nuNivel,Email,Cidade,ZipCode,Endereco,FlStatus,DtNascto) VALUES ('Hamilton Bass','2','Phasellus.at@urnaet.edu','Midwest City','88438','8813 Lorem, St.','Single','10-07-15');

E agora, em nosso banco Integracao, vamos criar uma tabela DIM_Clientes, que nada mais é que nossa tabela dimensão.

CREATE TABLE [dbo].[Dim_Clientes](
[idSchema] [int] IDENTITY(1,1) primary key,
[Current] bit,
[StartDate] datetime,
[EndDate] datetime,
[id] [int],
[Nome] [varchar](255) NULL DEFAULT (NULL),
[nuNivel] [varchar](50) NULL DEFAULT (NULL),
[Email] [varchar](255) NULL DEFAULT (NULL),
[Cidade] [varchar](50) NULL DEFAULT (NULL),
[ZipCode] [varchar](255) NULL DEFAULT (NULL),
[Endereco] [varchar](255) NULL DEFAULT (NULL),
[FlStatus] [varchar](255) NULL DEFAULT (NULL),
[DtNascto] [datetime] NULL DEFAULT (NULL))
GO

Repare que as duas tabelas tem estruturas bastante parecidas, porém nossa tabela dimensão tem alguns campos a mais: StartDate, EndDate.

Utilizaremos estes campos, para armazenar os períodos em que nossos clientes tinham determinados dados.

Crie uma pasta na raiz do seu computador chamada TreinamentoSCD e depois abra o ambiente do SQL Server Business Intelligence Development Studio, e crie um novo projeto.





Nomeie este novo projeto como TreinamentoSCD, e clique OK. Verifique antes, se a opção “Integration Services Project” está criada.




Pronto! Nossa solution está criada, e agora podemos criar nossos pacotes DTS para importação, exportação e demais operações de ETL.

Na aba Solution Explorer, clique com o botão direito na pasta SSIS e adicione um novo pacote clicando na opção New SSIS Package e chame-o de SCD Clientes.

Na aba control flow, adicione um componente DataFlow. Nosso pacote deve estar assim nessa etapa:





Clique duas vezes no componente DataFlow que adicionamos, abrindo a aba Dataflow. Na aba DataFlow, selecione na ToolBox, um componente OLE DB SOURCE no menu Data Flow Sources. Clique duas vezes no componente, e crie uma nova conexão com seu banco de dados, informando o Server Name, usuário e senha e não esqueça de selecionar o nosso banco de dados integração, recém criado, e a nossa tabela CLIENTES. Agora temos uma conexão em nosso projeto com o nosso banco de dados.

Clique novamente na aba ToolBox e selecione o componente Slowly Changing Dimension, e coloque-o no painel, conectando-o ao nosso “OLE DB Datasource”. Clique duas vezes no componente, abrindo suas configurações. A seguinte tela deve se abrir:




Selecione a tabela Dim_clientes, e clique na linha onde o campo Id está, e selecione o Key Type como Business Key. Isso habilitará o botão Next do Wizard. Clique em Next:




Na tela do Wizard que se abriu, adicione uma linha para cada uma das colunas da tabela Clientes e defina como Change Type, Historical Atribute. Clique em Next.




Selecione a opção “Use start and end dates to identify current and expired records”, e selecione para as opções Start Date e End Date as colunas StartDate e EndDate da nossa tabela DIM_CLIENTES criadas para este exemplo. Clique em Next, de-selecione a opção “Enable Inferred Member Support”, clique em Next e finalmente em Finish. No seu pacote, sua aba DataFlow ficará assim:




Execute o pacote, e depois faça um select na tabela DIM_CLIENTES. Verifique que os dados que estavam na tabela Clientes foram copiados para nossa tabela dimensão, e o campo StartDate tem a data da execução do pacote. Agora, faça um update no cliente com o Id = 1 alterando o seu ZipCode para 11111, e execute o pacote novamente. Execute o seguinte script:

select * from dim_clientes order by id

Verifique que um novo registro foi inserido na tabela DIM_CLIENTES, e o registro que já estava no banco de dados, agora esta com o campo EndDate preenchido com a data da segunda execução.

No próximo artigo, implementaremos uma composição mais complexa com o STAR SCHEMA desenhado, utilizando uma tabela fato e outras dimensões.

Até a próxima!