Служба SSIS не прошла проверку и вернула статус проверки " VS ISBROKEN"
Я пытаюсь создать временную таблицу и обработать два потока данных, используя временную таблицу. Он находится в контейнере последовательности, и если я просто выполняю контейнер, он работает идеально, но когда весь пакет запущен, он возвращает эту ошибку:
Информация: 0x4004300A в V-AccidentCodesBase, SSIS.Трубопровод:
Начинается этап валидации.
Ошибка: 0xC0202009 в V-AccidentCodesBase, вставить в временную таблицу [69]:
Код ошибки SSIS DTS_E_OLEDBERROR. Произошла ошибка OLE DB. Ошибка
код: 0x80040E14.
Доступна запись OLE DB. Источник: "Microsoft SQL Server Native
Клиент 11.0 "Hresult: 0x80040e14 описание:" оператор(Ы) может
не будьте готовы.".
Доступна запись OLE DB. Источник: "Microsoft SQL Server Native
Клиент 11.0 "Hresult: 0x80040E14 описание:" недопустимое имя объекта
'##TmpAccidentCode'.".
Ошибка: 0xC004706B в V-AccidentCodesBase, SSIS.Трубопровод: "вставить в
Временная таблица " неудачная проверка и вернул статус проверки
"VS_ISBROKEN".
Ошибка: 0xC004700C в V-AccidentCodesBase, SSIS.Трубопровод: один или несколько
компонент не прошел проверку.
Ошибка: 0xC0024107 в V-AccidentCodesBase: были ошибки во время
проверка заданий.
5 ответов:
Я бы установил свойство DelayValidation в True. Вы можете просто установить это в контейнере последовательности, или вам может потребоваться повторить эту настройку для дочерних объектов, например, для задачи потока данных.
Как уже упоминали другие ребята, ошибка может произойти по разным причинам. В моем случае я понял, что пытался преобразовать некоторый NULL в int в разделе скриптов SSIS. Что-то вроде :
ProductsBuffer.ProductId = Int64.Parse(reader["ProductId"].ToString());Так что исправить это было легко. Я просто проверил поле перед преобразованием, чтобы убедиться, что оно не равно null:
if (reader["ProductId"] != DBNull.Value) ProductsBuffer.ProductId = Int64.Parse(reader["ProductId"].ToString());
В итоге я решил проблему, которая была перегружена tempDB. Когда я замедлил процесс до одной команды в tempDb за раз, все прошло гладко.
Я столкнулся с той же ошибкой, в моем случае я использовал SSIS для импорта данных из файла excel в несколько таблиц.
Я использовал 2 разных файла, и это не удалось с одним и работал с другим, после некоторого обзора я обнаружил, что я ссылался на имя листа excel в пакете, поэтому лист excel должен быть назван точно (я думаю, что это чувствительно к регистру), как вы использовали на пакете SSIS
Также столкнулся с тем же сообщением об ошибке. Проблема заключалась в разрешениях на базу данных для пользователя, который запускает ETL (учетную запись службы). Убедитесь, что у пользователя, запускающего пакет, достаточно разрешений для выполнения запроса.
Comments