Задание SQL не может выполнить пакет, но VS нет

Когда я запускаю пакет непосредственно из Visual Studio, он не вызывает ошибки. Когда я выполняю пакет через задание агента SQL Server, он выдает ошибку:

Источник: Fact_Invoice_Item PWBConsolidation [1] Описание: Код ошибки SSIS DTS_E_OLEDBERROR. Произошла ошибка OLE DB. Код ошибки: 0x80004005. Доступна запись OLE DB. Источник: «Microsoft SQL Server Native Client 10.0» Hresult: 0x00040EDA Описание: «Предупреждение: нулевое значение удаляется агрегированием или другой операцией SET.». Ошибка конца: 2012-02-14 07: 17: 49.01 Код: 0xC0047038 Источник: Fact_Invoice_Item SSIS.Pipeline
Описание: Код ошибки SSIS DTS_E_PRIMEOUTPUTFAILED. Метод PrimeOutput компонента «PWBConsolidation» (1) вернул код ошибки 0xC0202009. Компонент вернул код ошибки, когда механизм конвейера вызвал PrimeOutput (). Значение кода ошибки определяется компонентом, но ошибка является фатальной, и выполнение конвейера прекращается. Перед этим могут быть опубликованы сообщения об ошибках с дополнительной информацией об ошибке. Конечная ошибка DTExec: выполнение пакета вернуло DTSER_FAILURE (1). Начато: 7:14:35 AM Завершено: 7:17:50 AM Прошло: 195,094 секунды. Не удалось выполнить пакет. ПРИМЕЧАНИЕ. Шаг был повторен запрошенное количество раз (3) безуспешно. Шаг не удался.

Я изолировал часть, которая вызывает проблему. В источнике Ole Db я использую запрос для получения данных, и когда я удаляю следующую строку, пакет успешно выполняется через задание агента сервера Sql:

Checksum = Checksum(S.BrokerID, S.TeamID, II.DatabaseName, II.INVOICE, I.Invoice_Date, P.Expiration_Date, P.Effective_Date, 
    P.Binder_Effective, I.AGENCY, II.MARKET, P.POLICY, CT.LINE_OF_BUSINESS, II.Coverage_Type, SUB.INSURED, 
    LOB.Description, CT.Description, I.Date_Due, I.Installment, P.Installments, P.ENDORSES, I.Inv_Tdate, Inv_Acctcur,
    INS.INDUSTRY, SUB.SUBMISSION
    )

РЕДАКТИРОВАТЬ:
Я только что проверил, и похоже, что часть данных проходит через поток данных, и в какой-то момент это просто вызывает ошибку. Я вручную установил контрольную сумму = 2 и все еще не работает

Есть идеи, почему это так?

Большое спасибо,
Илия


person ilija veselica    schedule 14.02.2012    source источник
comment
Я бы посмотрел на разрешения учетной записи агента SQL относительно упомянутых таблиц и столбцов. Похоже, что у него нет разрешения на выбор для одной из этих восьми или около того таблиц. Все ли эти столбцы включены в поток данных? Если кто-то пропал, это был бы наиболее вероятный кандидат на недостаточные привилегии.   -  person billinkc    schedule 14.02.2012
comment
Они появляются в потоке данных. Что еще хуже, это работало несколько недель до сегодняшнего дня.   -  person ilija veselica    schedule 14.02.2012
comment
Есть ли вероятность, что уровень защиты пакета - EncryptSensitiveWithUserCredentials, а учетная запись Active Directory PackageCreator была недавно удалена?   -  person billinkc    schedule 14.02.2012
comment
Какой тип данных для поля контрольной суммы? Если это двоичный / LOB-тип, возможно, у вас возникли проблемы с разрешениями файловой системы.   -  person billinkc    schedule 14.02.2012
comment
Как я могу узнать, что это за тип данных? Я думаю, это что-то по умолчанию, верно? Можно ли это изменить?   -  person ilija veselica    schedule 14.02.2012
comment
Добавьте этот оператор обратно и щелкните правой кнопкой мыши поток данных, сразу же приступив к работе с источником Ole Db. Выберите «Изменить», затем просмотрите вкладку «Метаданные».   -  person billinkc    schedule 14.02.2012
comment
это DT_I4. Полагаю, это 4-байтовое целое число?   -  person ilija veselica    schedule 14.02.2012
comment
Я пробовал ProtectionLevel = DontSaveSensitive. Аккаунт не удаляется из активного каталога.   -  person ilija veselica    schedule 14.02.2012
comment
Не могли бы вы обновить заявку, добавив в нее снимок экрана с потоком данных? Кроме того, что такое PWBConsolidation? Это цель, преобразование, источник?   -  person billinkc    schedule 14.02.2012
comment
Почему-то сегодня этой ошибки нет. Понятия не имею, что случилось. Если ошибка появится снова, я обновлю свой вопрос   -  person ilija veselica    schedule 15.02.2012


Ответы (1)


Похоже, вы столкнулись с проблемой ограничения вашей таблицы, в которую вы вставляете, или значений, с которыми вы работаете ... например, агрегатная функция (max, sum, avg ..) существует с нулевым значением.

Попробуйте перенаправить строки с ошибками в плоский файл или что-то в этом роде и посмотрите, появляется ли ошибка по-прежнему.

Также попробуйте установить ANSI_WARNINGS OFF в своем операторе SQL

Наслаждайся и удачи

person Qui_Jon    schedule 14.02.2012
comment
Попробуйте перенаправить строки с ошибками в плоский файл или что-то в этом роде и посмотрите, появляется ли ошибка по-прежнему. - Какие строки ошибок? Те, которые нельзя вставить по назначению? - person ilija veselica; 15.02.2012