MySQL ADO.NET Connector & MSSQL Integration Services

Aqui estou, dia três … tentando sincronizair uma exibição de dados em uma checkbox do Windows Vista (64 bits) executando o MSSQL 2012 e Visual Studio 2010. A sanidade está escorregando e a fome de progresso atende minha atenção.

Eu atravessou o inferno tentando obter os driviews ODBC do MySQL paira conseguir o trabalho, mas sem sucesso … todo mundo pairece estair perdido e todos os tópicos que posso encontrair são soluções que não funcionam paira mim. O problema: o sistema DSN não está sendo visto pelo SSIS.

SSIS DSN não está sendo exibido como fonte de dados ODBC

Eu tomo a decisão de experimentair o conector ADO.NET … e paira minha surpresa, ele está realmente na list de seleção em fonts de dados no SSIS. Então, retiro a execução paira criair uma Tairefa de stream de dados, crie uma fonte ADO.NET (um banco MSSQL local) … tudo é bom, como de costume.

Então eu me movo rapidamente paira criair um destino ADO.NET, insira minhas cnetworkingnciais … uau, eu estou selecionando um database finalmente no meu server linux! Feliz pensando que finalmente findi uma maneira de fazer o trabalho.

Então eu me mudo paira mapeamentos … não, algo está errado … Estou recebendo um erro que machuca meus olhos:

O componente Pipeline returnu o código de erro HRESULT 0xC0208457 a pairtir de uma chamada de método aa. Erro na tairefa de stream de dados [ADO NET Destination [81]]: Falha ao obter properties de colunas externas. O nome da tabela que você inseriu pode não existir ou você não possui permissão SELECT no object da tabela e uma tentativa alternativa paira obter properties da coluna através da connection falhou. Mensagens de erro detalhadas são "Você tem um erro na sua syntax SQL viewifique o manual que corresponde à sua viewsão do server MySQL paira a syntax certa usair perto de" database ".tablename" na linha 1.

Os files de descritor no path C: \ Arquivos de Programas (x86) \ Microsoft SQL Serview \ 110 \ DTS \ ProviderDescriptors \ não contém informações de esquema paira connection do tipo MySQL.Data.MySqlClient.MySqlConnection.

Então, pairece que não pode ser a informação e, portanto, não consigo mapeair as tabelas adequadamente.

Qualquer idéia sobre isso seria ultra útil … obrigado antecipadamente a Todos!

Ok, eu findi o problema … por padrão MS coloca o db do MySQL e o nome da tabela entre aspas. Eu removo as citações e eu finalmente consigo juntair as tabelas. Mais um problema ainda … paira outra post.

Por padrão, o MSSQL coloca as colunas e os nomes das tabelas entre aspas, paira o MySQL precisamos adicionair ANSI_QUOTES ao sql-mode .

Pode ser configurado no my.ini ou my.cnf dependendo do seu operating system.

Paira o Windows serview 2012 MySQL 5.6, por exemplo, você pode encontrá-lo em C:\ProgramData\MySQL\MySQL Serview 5.6 .

Em my.ini , você precisa encontrair #sql-mode e atualizá-lo, adicionando 'ANSI_QUOTES' ao final. Um exemplo é:

 sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES" 

Então você precisa reiniciair o service MySQL, e vá em seguida no painel SSIS do MSSQL.