Ошибка импорта DTS

У меня есть таблица. Он содержит информацию о компании, такую ​​как имя, адрес, телефон, адрес электронной почты и т. Д. Все, что я хочу сделать, это простой импорт в SQL в таблицу, которую он может создать, чтобы я мог выполнить некоторую обработку на нем. Я просто использую MS SQL Import Wizard. Я не использую BCP.

Он доходит до конца и дает мне эту ошибку:

Операция Blockquote остановлена ​​...

  • Инициализация задачи потока данных (успех)

  • Инициализация соединений (успех)

  • Установка команды SQL (успех)

  • Настройка подключения к источнику (успех)

  • Настройка целевого соединения (успех)

  • Валидация (Успешных) Сообщений Предупреждение 0x80049304: Поток данных Задача 1: Предупреждение: Не удалось открыть глобальную общую память для связи с производительной DLL; Счетчики производительности потока данных недоступны. Чтобы решить эту проблему, запустите этот пакет от имени администратора или на консоли системы. (Мастер импорта и экспорта SQL Server)

  • Подготовка к выполнению (успех)

  • Предварительно выполнить (Успех)

  • Выполнение (Ошибка) Сообщения Ошибка 0xc020901c: Поток данных Задача 1: Произошла ошибка с источником - crm_company$.Outputs[Исходный вывод Excel]. Столбцы [Направления] на источнике - crm_company$.Outputs[Исходный вывод Excel]. Возвращалось состояние столбца: "Текст был усечен или один или несколько символов не совпадали на целевой кодовой странице". (Мастер импорта и экспорта SQL Server)

Ошибка 0xc020902a: Поток данных Задача 1: "Источник - crm_company$.Outputs[Исходный выход Excel]. Колонки [Направления]" не выполнен, так как произошло усечение, и расположение строки усечения для "Источник - crm_company$.Outputs[Исходный вывод Excel]].Columns[Directions]"указывает сбой при усечении. Произошла ошибка усечения указанного объекта указанного компонента. (Мастер импорта и экспорта SQL Server)

  • Копирование в [dbo].[Crm_company] (Остановлено) Сообщения Ошибка 0xc0047038: Поток данных Задача 1: Код ошибки служб SSIS DTS_E_PRIMEOUTPUTFAILED. Метод PrimeOutput в Source - crm_company$ возвратил код ошибки 0xC020902A. Компонент возвратил код ошибки, когда механизм конвейера вызвал PrimeOutput(). Значение кода ошибки определяется компонентом, но ошибка является фатальной, и конвейер прекратил выполнение. Перед этим могут быть сообщения об ошибках с дополнительной информацией о сбое. (Мастер импорта и экспорта SQL Server)

  • Информация о сообщениях после выполнения (успеха) 0x4004300b: Поток данных Задача 1: "Destination - crm_company" записала 469 строк. (Мастер импорта и экспорта SQL Server)

Blockquote

Прежде всего, я сказал DTS игнорировать любые ошибки усечения. Исходные поля: int или nvarchar. Я редактирую отображения и заставляю его быть int вместо float для нужных столбцов. Я установил размер столбца по умолчанию равным 510 из 255. Для 2 столбцов, Directions и Notes, он решил, что Directions - это nvarchar, а Notes - это nvarchar(max). Я переопределяю Directions one, чтобы он обрабатывался как nvarchar (max), и я вижу, что в таблице он создается после запуска. Однако, когда он работает, он терпит неудачу КАЖДЫЙ РАЗ с указанной выше ошибкой.

Я просто хочу эти данные в таблицу. Это все. Если я сначала укажу таблицу вручную и импортирую, она все равно будет ошибочной. Самый длинный текст в Directions составляет 978 символов, поэтому он вряд ли огромен. Мне все равно, если это усекается, я просто не хочу, чтобы это прекратилось, когда он чувствует, что это необходимо. Импортируется 16000 строк, и только 470 импортируются, прежде чем происходит сбой.

Я не знаю, какая строка не сработает в исходном файле, потому что, как ни странно, DTS не извлекает данные в том порядке, в котором они находятся, в электронной таблице. Пойди разберись. Я попытался переопределить глупые попытки DTS при определении форматов столбцов, вставив 20 строк текстовых данных, но это все равно не помогло.

2 ответа

Я пытался обойти это, и мне было гораздо проще импортировать электронную таблицу в Access, а затем импортировать Access в SQL. Работа сделана за 5 минут.

Предложения:

Если у вас есть Visual Studio BI, разработайте пакет служб SSIS и:

1.) Попробуйте добавить ветку для неудачных строк, чтобы перенаправить их. Вы можете сделать это, добавив маршрут с красной линией из источника Excel. После запуска пакета вы можете провести анализ успешных и неудачных строк.

2.) Важно то, какой тип соединения вы используете для SQL Server. У меня много проблем с собственным клиентом SQL, поэтому я предпочитаю использовать типы соединений ADO.NET или OLE DB.

С помощью мастера:

3.) Попробуйте использовать преобразование типов

4.) Сохраните файл в TXT, затем выполните ETL.

Другие вопросы по тегам