#mysql #ssis #timeout
#mysql #ssis #тайм-аут
Вопрос:
Я пытаюсь перенести 67 714 854 строки из MySQL на SQL Server с использованием SSIS. Время ожидания пакета истекает после передачи 14 282 990 строк. Я также изменил свойство time out на 0, но это не помогло.
Как мне решить эту проблему?
Комментарии:
1. если вы заплатили за ssis, разве это не входит в комплект поставки поддержки поставщика?
2. По какой-либо причине не разделяется на семь передач по десять миллионов строк?
Ответ №1:
Я нашел для этого хакерское решение. И это имеет ограничение в конце вашего запроса. Я столкнулся с той же проблемой с ADO.Сетевое соединение для подключения к MySQL. Хотя это не решает проблему. По крайней мере, работа выполнена.
SSIS: 2208 R2. MySQL: 5.0
Комментарии:
1. У меня была похожая проблема, когда мой запрос возвращал 0 строк (должно было быть около 39 000). Добавление
LIMIT 10000000
заставило это работать. Хотел бы я знать, почему.
Ответ №2:
Какой «режим доступа к данным» вы выбрали в вашем конечном соединении OLE DB. Если вы выбрали «Таблица или представление — быстрая загрузка» (это значение по умолчанию), то будет указан «Максимальный размер фиксации вставки». Вы можете попробовать одно из двух: 1) изменить размер фиксации на большее число; или 2) попробовать другой режим доступа к данным «Таблица или vew». Поскольку вы получаете ошибку таймаута, я подозреваю, что вариант 1 может не помочь (поскольку вы уже получаете таймаут с меньшим значением), поэтому попробуйте вариант 2. Хотя это, вероятно, приведет к снижению производительности, на самом деле это может завершиться успешно. (Затем вы могли бы попробовать подход @Siva и разделить выходные данные по нескольким назначениям для повышения производительности).
(Примечание: я имею в виду то, что доступно в SQL Server 2008 R2, если вы используете предыдущие версии, это может немного отличаться)
Если ничего из вышеперечисленного не работает, вы также можете попробовать создать новый пакет SSIS с нуля, запустив мастер импорта SQL Server (щелкните правой кнопкой мыши на вашей базе данных в SQL Server Management Studio и выберите Задачи / Импортировать данные. Следуйте инструкциям мастера и ближе к концу убедитесь, что вы установили флажок для сохранения пакета SSIS и выбрали расположение файла для его сохранения. Как правило, результирующий пакет SSIS будет функциональным пакетом (и тогда вы также сможете вносить в него любые дальнейшие изменения, которые вам понравятся).
Ответ №3:
Выдает ли MySQL ошибку или вы используете PHP (или другой язык) для передачи данных и это время ожидания? В последнем случае в PHP вы можете установить тайм-аут скрипта на бесконечность, используя это:
set_time_limit(0);
В любом случае, основываясь на предоставленной информации, я не уверен, что это за тип базы данных, но обычно я бы настроил скрипт cron для передачи данных по частям, чтобы поддерживать нагрузку на приемлемом уровне. Пожалуйста, предоставьте больше информации…
Комментарии:
1. моим источником является mysql, а местом назначения — sql server. я использовал selct все столбцы из таблицы в преобразовании oledb souce. Можете ли вы рассказать мне, как и что такое cron script спасибо за ваш ответ
2. Ну, если вы остаетесь с SQL, вы не можете написать cron-скрипт. Скрипт cron — это, по сути, скрипт, который вы разрешаете системе автоматически запускать с заданными интервалами. Это позволит вам выполнять перемещение данных по частям. Однако для этого требуется отдельный язык, такой как php, поскольку ему необходимо отслеживать последнюю строку, которая была перемещена. скрипт cron будет запускать тот же код с дополнительным предложением WHERE, указывающим диапазон идентификаторов (/ row). Очевидно, что вы можете сделать это вручную, но это может быть утомительно. Либо добавьте, ГДЕ id>= n1 И id < n2 , либо используйте функцию limit: LIMIT 100000, 100000 .