Соединитель MySQL ADO.NET и службы интеграции MSSQL
Вот и я, третий день... пытаюсь синхронизировать представление данных в Windows Vista (64-битной), работающей под управлением MSSQL 2012 и Visual Studio 2010. Разумность и стремление к прогрессу наполняют мое внимание.
Я прошел через ад, пытаясь заставить драйверы MySQL ODBC получить работу, но безрезультатно... все, кажется, потеряны, и все потоки, которые я могу найти, являются решениями, которые не работают для меня. Проблема: системный DSN не виден службами SSIS.
DSIS SSIS не отображается как источник данных ODBC
Я принимаю решение опробовать соединитель ADO.NET... и, к моему удивлению, он фактически находится в списке выбора в источниках данных в SSIS. Поэтому я снимаю работу, чтобы создать задачу потока данных, создать источник ADO.NET (локальная база данных MSSQL)... все хорошо, как обычно.
Затем я быстро перехожу к созданию пункта назначения ADO.NET, вводу своих учетных данных... вау, я наконец-то выбираю базу данных на своем сервере 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.
Так что, похоже, он не может получить информацию, и поэтому я не могу правильно отобразить таблицы.
Любые идеи по этому поводу будут очень полезны... заранее спасибо всем!
2 ответа
Хорошо, я нашел проблему... по умолчанию MS помещает базу данных MySQL и имя таблицы в кавычки. Я удаляю кавычки и наконец могу сопоставить таблицы. Еще одна проблема, хотя... для другого поста.
По умолчанию 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.