Я пытаюсь перенести таблицу из MySQL в MSSQL с помощью средства переноса данных в студии MS SQL Management. Я использую провайдер .net для odbc и выбираю tabel и пытаюсь сделать tansfer. Но есть получение общих таблиц в базе данных, но когда я пытаюсь передать, это дает ошибку. Даже когда я пытаюсь просмотреть данные, он говорит:
the preview data could not be retrieved.
Additional Information:
Error [42000].... there is an error near line 1 ( myodbc5.dll).
Есть ли что-то не так?
Я загрузил драйверы с сайта MySQL, и я попытался переустановить их более 10 раз.
Мне ничего не хватает?
Пожалуйста, помогите мне.
На ваш пост может быть несколько проблем. Я бы рекомендовал разбить устранение неполадок на следующие шаги:
Попытайтесь подключиться к серверу в инструменте, отличном от Management Studio и SSIS, чтобы узнать, работает ли ваше соединение ODBC. Я бы рекомендовал использовать Toad for MySQL от Quest Software. Он бесплатный и имеет аналогичный интерфейс для Studio Management.
После правильного подключения к серверу попробуйте запросить данные, чтобы убедиться, что у вас есть соответствующие разрешения.
Выполняйте шаги 1 и 2 во время входа на сервер, которому необходимо подключиться к базе данных MySQL. На сервере могут возникать различные проблемы с подключением, чем на рабочем столе. Например, сервер может быть защищен по-разному в домене или у вас может быть проблема совместимости с драйверами на сервере, которая не существует на рабочем столе.
Попробуйте настроить соединение связанного сервера, используя соединение ODBC. На одном сервере мы обнаружили, что мы могли бы успешно заставить это работать, но мы не смогли заставить SSIS правильно играть с ODBC-соединением. В худшем случае вы можете использовать SSIS для выполнения связанного запроса сервера, чтобы передать данные через вызов хранимой процедуры. Здесь пример соединения Linked Server, который работал для нас в этом случае.
EXEC master.dbo.sp_addlinkedserver @server = N'Some_MySQL_Server_Name ', @srvproduct = N'MySQLDatabase', @provider = N'MSDASQL ', @datasrc= N'Some_ODBC_Name'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'Some_MySQL_Server_Name ', @useself = N'False', @locallogin = NULL, @rmtuser = NULL, @rmtpassword = NULL
ГО
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'collation compatible', @optvalue = N'false ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'data access', @optvalue = N'true ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'dist', @optvalue = N'false ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'pub', @optvalue = N'false ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'rpc', @optvalue = N'false ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'rpc out', @optvalue = N'false ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'sub', @optvalue = N'false ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'connect timeout', @optvalue = N'0 ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'collation name', @optvalue = null GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = проверка правильности N'lazy', @optvalue = N'false ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'query timeout', @optvalue = N'0 ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'use remote collation', @optvalue = N'true ' GO
EXEC master.dbo.sp_serveroption @server = N'Some_MySQL_Server_Name ', @optname = N'remote proc promotion promotion', @optvalue = N'true ' GO
В потоке данных SSIS должен использоваться источник ADO.NET. Не полагайтесь на режим доступа к "таблице или виду". Вместо этого используйте команду SQL. Я заметил, что в SSIS часто возникают проблемы с чтением метаданных, и вам может понадобиться CAST некоторые из полей для решения этой проблемы. Иногда это делает колонку длинной или слишком короткой. Обратите внимание на типы данных в источнике, чтобы узнать, как SSIS может удалять длины. Я не помню, что вызывает это, но, похоже, это относится к типам nullability и string, если моя память правильная. Я бы рекомендовал отправить его адресату для чтения данных и использовать средство просмотра данных для просмотра данных, чтобы убедиться, что они выглядят правильно. Вам также может потребоваться добавить шаг преобразования данных между источником и получателем для преобразования из Unicode в не-Юникод.
Если вы определяете проблему с подключением ODBC, вы можете попробовать следующие настройки:
Флаги 1: возвращать сопоставленные строки вместо затронутых строк; Разрешить большие наборы результатов; Использовать сжатие; Обработать столбцы BIGINT как столбцы INT.
Флаги 2: Не проговаривайте при подключении.
Флаги 3: включить имя таблицы в SQLDescribeCol(); Отключите поддержку транзакций. Debug: регистрирует запросы к myodbc.sql.
Настройки SSL: оставьте поле пустым, если оно не закончилось SSL.
Нажав "Тест", вы должны вернуть Connection Successful. Если это сработает, тогда вы сможете заставить Toad для MySQL работать с ним.
Если вы переходите по пути Linked Server, то убедитесь, что имя ODBC соответствует точно определенному источнику данных. Я считаю, что мы обнаружили, что это чувствительно к регистру, но я не совсем уверен.