Ok, bem, eu encontrei o problema ... por padrão, o MS coloca o banco de dados MySQL e o nome da tabela entre aspas. Eu removo as aspas e finalmente posso mapear as tabelas juntas. Ainda outro problema embora ... para outro post.
Aqui estou eu, dia três ... tentando sincronizar uma exibição de dados em uma caixa do Windows Vista (64 bits) executando o MSSQL 2012 e o Visual Studio 2010. A sanidade está escorregando e a fome pelo progresso preenche minha atenção.
Eu passei pelo inferno tentando obter os drivers ODBC do MySQL para obter o trabalho, mas sem sucesso ... todo mundo parece estar perdido e todos os tópicos que posso encontrar são soluções que não funcionam para mim. O problema: DSN do sistema não está sendo visto pelo SSIS.
DSN SSIS não está sendo exibido como fonte de dados ODBC
Eu tomo a decisão de experimentar o conector ADO.NET ... e, para minha surpresa, ele está na lista de seleção em fontes de dados no SSIS. Então, eu saio correndo para criar uma tarefa de fluxo de dados, criar um ADO.NET Source (um local MSSQL DB) ... tudo está bem, como de costume.
Então eu mudo rapidamente para a criação de um destino ADO.NET, digite minhas credenciais ... uau, estou selecionando um banco de dados finalmente no meu servidor linux! Feliz pensando que finalmente descobri uma maneira de fazer o trabalho.
Então eu mudo para mapeamentos ... não, algo está errado ... Estou recebendo um erro que machuca meus olhos:
O componente Pipeline retornou o código de erro HRESULT 0xC0208457 de uma chamada de método. Erro na tarefa de fluxo de dados [Destino ADO NET [81]]: Falha ao obter propriedades de colunas externas. O nome da tabela que você inseriu pode não existir ou você não tem a permissão SELECT no objeto da tabela e uma tentativa alternativa de obter propriedades da coluna por meio da conexão falhou. Mensagens de erro detalhadas são "Você tem um erro na sua sintaxe SQL verificar o manual que corresponde à sua versão do servidor MySQL para a sintaxe correta para usar perto de" banco de dados ".tablename" na linha 1.
Os arquivos do descritor no caminho C: \ Arquivos de Programas (x86) \ Microsoft SQL Server \ 110 \ DTS \ ProviderDescriptors \ não contêm informações de esquema para a conexão do tipo MySQL.Data.MySqlClient.MySqlConnection.
Portanto, parece que não é possível a informação e, portanto, não consigo mapear as tabelas corretamente.
Qualquer ideia sobre isso seria extremamente útil ... agradecemos antecipadamente a todos!
Ok, bem, eu encontrei o problema ... por padrão, o MS coloca o banco de dados MySQL e o nome da tabela entre aspas. Eu removo as aspas e finalmente posso mapear as tabelas juntas. Ainda outro problema embora ... para outro post.
Por padrão, o MSSQL coloca as colunas e os nomes das tabelas entre aspas, para o MySQL, precisamos adicionar ANSI_QUOTES
a sql-mode
.
Pode ser definido em my.ini
ou my.cnf
dependendo do seu sistema operacional.
Para o Windows Server 2012 MySQL 5.6, por exemplo, você pode encontrá-lo em C:\ProgramData\MySQL\MySQL Server 5.6
.
Em my.ini
, você precisa encontrar #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 reiniciar o serviço MySQL e ir em seguida no painel SSIS do MSSQL.