Se você trabalha com SSIS (SQL Server Integration Services), em algum momento você provavelmente precisará acessar dados de um banco de dados MySQL antes de realizar a importação para o SQL Server. Para essa solução utilizaremos o SSIS, conectores MySQL e scripts T-SQL (Transaction SQL) para visualizar os metadados do banco MySQL.

Ao realizar os passos dessa solução, você vai se familiarizar com a tarefa de extração de dados de um banco MySQL e evitar problemas durante uma tarefa de conexão e importação de dados de SGBDs (Sistema Gerenciador de Banco de Dados) distintos.

Para realizara tarefa de exibir os metadados das tabelas do MySQL utilizaremos a base de dados “INFORMATION_SCHEMA” para obter detalhes da fonte de dados. A base INFORMATION_SCHEMA é a estrutura de dicionário de dados utilizada pelo MySQL e provê informações referentes a quaisquer objetos que estão relacionados neste banco de dados. Podemos extrair desta estrutura informações como privilégios de usuários, nomes de stored procedures e funções de um determinado schema.

A primeira tarefa que precisamos realizar é estabelecer uma conexão entre o MySQL e o SQL Server, para isso utilizaremos um driver ODBC (Open Database Connectivity). Este possui uma implementação específica da linguagem SQL, com ele podemos realizar a comunicação entre base de dados de forma transparente, permitindo a conexão entre várias bases de dados. Podemos, por exemplo, conectar simultaneamente as bases de dados do Oracle, Firebird e MySQL ao SQL Server.

Nesse tutorial iremos trabalhar com SGBD MySQL, os conectores podem ser encontrados nesse link: http://dev.mysql.com/downloads/connector/odbc/5.1.html. O site fornece informações sobre como baixar e instalar os conectores e aponta para outras referências que explicam como usar os conectores. Selecione o driver de acordo com o seu sistema operacional (32 ou 64 bits). Após o download, execute a instalação.

Concluída a instalação do driver, precisaremos atribuir um DSN (Data Source Name) a esse driver. Para sistemas 32 bits, a configuração do driver de conexão deve ser acessada através desse caminho: Control Panel\All Control Panel Items\Administrative Tools\Data Sources (ODBC), conforme a Figura 1.

Figura 1. Configurando driver de conexão (32 bits)

Para sistemas 64 bits, o driver deve ser configurado através do caminho C:\Windows\SysWOW64\odbcad32, conforme a Figura 2.

Figura 2. Configurando driver de conexão (64 bits)

Na próxima janela clique na Aba “System DSN”, em seguida, clique no botão “Add...”, uma nova janela se abrirá (Create New Data Source). Selecione o driver instalado (MySQL ODBC 5.1 Driver) e depois clique em finish, conforme a Figura 3.

Figura 3. Seleção de drivers

Ao clicar no botão Finish, uma tela de configuração se abrirá (Figuras 4 e 5). Nessa janela, preencha os campos conforme exemplo a seguir, ou de acordo com os dados de acesso ao seu banco. O nome “MySQL_64” foi atribuído para o Data Souce Name.

Após o preenchimento podemos verificar se a conexão foi estabelecida com sucesso ao pressionar o botão “Test”. Se estiver tudo ok, uma mensagem de sucesso será exibida (Figura 4). Com a conexão estabelecida, devemos selecionar o banco que iremos nos conectar. Para esse exemplo vamos utilizar o banco “INFORMATION_SCHEMA” no campo “Database”. (Figura 5).

Figura 4. Testando conexão

Figura 5. Seleção do banco de dados

Após selecionar o banco, clique em Ok. Repita o mesmo procedimento para a aba “User DSN”. No final desse processo deveremos ter o mesmo resultado que é apresentado na Figura 6.

Figura 6. Finalizando conexão com o banco

Com o Driver de conexão configurado, vamos criar um novo projeto utilizando a ferramenta Integration Services (Figura 7).

Figura 7. Integration Services

Após a criação do projeto, deveremos adicionar uma Tarefa de Fluxo de Dados (Data Flow Task) no Painel Fluxo de Controle (Control Flow). Para isso dê um duplo clique sobre o componente “Data Flow Task”, conforme a Figura 8.


Figura 8. Adicionando Data Flow Task

Primeiramente devemos criar uma conexão com o banco de dados MySQL, é nesse momento que iremos utilizar o conector que configuramos anteriormente. Pra criar uma conexão clique com o botão direito do mouse sobre o componente “Data Flow Task” e no menu que se abrirá, selecione a opção “New Connector” (Figura 9). Ao clicar nessa opção abrirá uma nova janela (Add SSIS Connection Manager (Figura 10)), selecione o tipo ODBC.

Figura 9. Nova conexão

Figura 10. Add SSIS Connection Manager

Uma nova janela se abrirá, clique em “New...” para adicionar uma nova conexão. Uma nova tela será apresentada onde selecionaremos a primeira opção (Use user or system data source name). Em seguida, selecionamos a conexão que criamos anteriormente (MySQL_64). Após a definição do DSN, faremos o teste de conexão, para isso clicamos em “Test Connection” (Figura 11).

Figura 11. Teste de conexão

Após a realização do Teste, clicamos e Ok, e novamente em Ok na tela anterior. Com a conclusão dessa etapa teremos a conexão com o banco MySQL estabelecida, conforme a Figura 12.

Figura 12. Confirmação da conexão estabelecida

Clique com o botão direito do mouse sobre o painel Data Flow e selecione a opção “Variables” (Figura 13).

Figura 13. Painel Data Flow

Iremos adicionar uma nova variável chamada “Metadados” do tipo Object. Essa variável será a responsável por armazenar os metadados do banco MySQL em tempo de execução (Figura 14).

Figura 14. Variável metadados

No painel “Data Flow ” adicionaremos um componente chamado “ODBC Source” (Figura 15). Esse componente fará a conexão com a fonte de dados localizado no banco MySQL.

Figura 15. Incluindo ODBC source

Com um duplo clique sobre o componente “ODBC Source”, uma nova janela se abrirá para selecionar o driver de conexão (MySQL_64) no campo “ODBC Connection Manager” que criamos no início.

No campo “Data acess mode:” selecione “SQL Command” e no campo que se abriu (“SQL Command text:”), utilizaremos a seguinte query: “SELECT * FROM INFORMATION_SCHEMA.TABLES”. Essa consulta trará como resultado todos os metadados de todas as tabelas existentes no banco MySQL. Veja a Figura 16.

Figura 16. Consulta a metadados

Iremos agora adicionar o componente “Recordset Destination”. O mesmo não salva dados em uma fonte de dados externa.Em vez disso, salva os dados na memória em um conjunto de registros armazenado em uma variável de pacote. Com o componente “Recordset Destination” adicionado, precisamos realizar uma conexão entre ele e a fonte de dados (ODBC Source). Para isso, clique e arraste a seta azul do componente “ODBC Source” até o componente “Recordset Destination”, conforme a Figura 17.

Figura 17. componente Recordset Destination

Com um duplo clique sobre o componente criado, uma nova janela (Advanced Editor for Recordset Destination - Figura 18) se abrirá. Nela deveremos atribuir a variável “Metadados” que criamos em passos anteriores ao campo “Variable Name”.

Figura 18. Definindo Variable Name

Na aba “Input Columns” devemos selecionar as colunas da tabela “information_schema” (Figura 19) que desejamos extrair informações. Após a seleção dos itens, pressione o botão “Refresh”, por fim, clique em “Ok”.

Figura 19. Seleção de colunas

Devemos agora permitir que os dados possam ser visualizados quando executarmos o projeto. Para isso, clique com o botão direito do mouse sobre a linha que conecta os componentes “ODBC Source” e “RecordSet Destination” e em seguida selecione a opção “Enable Data Viewer” (Figura 20). Uma lupa deverá aparecer sobre o componente “Recordset Destination”.

Figura 20. Conectando componentes

Para executarmos o projeto pressionamos a tecla F5. Os metadados do MySQL aparecerão em uma Data Grid, conforme a Figura 21.

Figura 21. Apresentação dos metadados

A solução apresentada nos dá uma visão geral de como recuperar e visualizar dados de um banco de dados MySQL. Seguindo esses passos evitaremos alguns dos problemas encontrados quando estamos trabalhando com conectores ODBC. O objetivo desse artigo foi possibilitar de maneira sucinta, como acessar informações de um banco de dados MySQL através SSIS.

Até o próximo artigo!