Вот и я, день третий ... пытаюсь синхронизировать представление данных на компьютере с Windows Vista (64-разрядная версия), работающем с MSSQL 2012 и Visual Studio 2010. Рассудок ускользает, и мое внимание наполняется жаждой прогресса.
Я прошел через ад, пытаясь заставить драйверы MySQL ODBC получить работу, но безрезультатно ... все, кажется, потерялись, и все темы, которые я могу найти, являются решениями, которые не работают для меня. Проблема: SSIS не видит системный DSN.
SSIS DSN не отображается как источник данных ODBC
Я принимаю решение опробовать соединитель ADO.NET ... и, к моему удивлению, он действительно есть в списке выбора в источниках данных в SSIS. Итак, я начинаю бежать, чтобы создать задачу потока данных, создать источник ADO.NET (локальную базу данных MSSQL) ... все как обычно.
Затем я быстро перехожу к созданию ADO.NET Destination, ввожу свои учетные данные ... вау, я, наконец, выбираю базу данных на своем Linux-сервере! Рад думать, что я, наконец, нашел способ выполнить свою работу.
Затем я перехожу к сопоставлениям ... нет, что-то не так ... Я получаю сообщение об ошибке, которое режет глаза:
Компонент конвейера возвратил код ошибки HRESULT 0xC0208457 из вызова метода. Ошибка в задаче потока данных [ADO NET Destination [81]]: не удалось получить свойства внешних столбцов. Введенное вами имя таблицы может не существовать, или у вас нет разрешения SELECT для объекта таблицы, и альтернативная попытка получить свойства столбца через соединение не удалась. Подробные сообщения об ошибках: «У вас есть ошибка в синтаксисе SQL, проверьте руководство, которое соответствует вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с« database ».tablename» в строке 1.
Файлы дескрипторов на пути C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ DTS \ ProviderDescriptors \ не содержат информацию о схеме для подключения типа MySQL.Data.MySqlClient.MySqlConnection.
Таким образом, похоже, что он не может получить информацию, и поэтому я не могу правильно сопоставить таблицы.
Любые идеи по этому поводу были бы очень полезны ... заранее всем спасибо!
Хорошо, я нашел проблему ... по умолчанию MS помещает MySQL db и имя таблицы в кавычки. Я удаляю кавычки и наконец могу сопоставить таблицы. Еще одна проблема ... для другого поста.
По умолчанию MSSQL помещает имена столбцов и таблиц в кавычки, для MySQL нам нужно добавить ANSI_QUOTES
к sql-mode
.
Его можно установить в my.ini
или my.cnf
в зависимости от вашей операционной системы.
Например, для Windows server 2012 MySQL 5.6 вы можете найти его в C:\ProgramData\MySQL\MySQL Server 5.6
.
В my.ini
тебе нужно найти #sql-mode
и обновите его, добавив в конец ANSI_QUOTES. Пример:
sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES"
Затем вам нужно перезапустить службу MySQL и перейти к панели SSIS MSSQL.