Ошибка агента Sql (SQL server 2008R2)
У меня есть агент, который выполняет пакет SSIS, который сам выполняет несколько последующих дочерних пакетов. Мы делаем это таким образом, чтобы ограничить объем необходимого взаимодействия (с БД) всякий раз, когда нам нужно добавить/удалить дочерний пакет из цепочки выполнения.
Все пакеты, кроме одного, выполняются успешно, но последний генерирует одно или несколько предупреждений, которые приводят к сбою всего задания. Я не знаю, где перечислены предупреждения.
Дочерний пакет, о котором идет речь, просто импортирует электронную таблицу в таблицу sql и вызывает хранимую процедуру для вставки данных. Сохраненный процесс работает нормально.
Все остальные дочерние пакеты делают то же самое (с разными файлами электронных таблиц), и они работают нормально.
Я в растерянности...
Что я уже пробовал:
Когда я запускаю соответствующий дочерний пакет в VS2008, никаких ошибок или предупреждений не генерируется.
Если я удаляю дочерний пакет, о котором идет речь, из цепочки выполнения, задание sql выполняется успешно.
Если у меня есть только дочерний пакет, о котором идет речь в цепочке выполнения, задание sql завершается неудачей из-за (воображаемых?) предупреждений.
Последний шаг в дочернем пакете-запуск сохраненного процесса upsert. Если я отключу этот шаг, задание будет выполнено без проблем, так что предупреждение, вероятно, генерируется хранимой процедурой. В плане выполнения сохраненного процесса не указано никаких предупреждений, и он, по-видимому, выполняется нормально.
=================
Я знаю, что могу отключить функцию "предупреждения об отказе", но не хочу этого делать, пока не выясню, что это за предупреждения.
=================
Я добавил таблицу аудита, чтобы увидеть, действительно ли сохраненный процесс работает так, как задумано, и, похоже, так оно и есть. Работа по-прежнему терпит неудачу из-за предупреждений. Я сбит с толку.
У меня есть дюжина других хранимых процессов, точно таких же, как тот, о котором идет речь, и ни один из них не выдает предупреждений в связанных с ними заданиях SQL.
========================
Это сохраненный процесс (за вычетом фактических имен таблиц и столбцов).
SET NOCOUNT ON; IF OBJECT_ID('[table2]','U') IS NULL BEGIN SELECT TOP 0 * INTO [dbo].[table2] FROM [dbo].[Imported_table1] END MERGE INTO [dbo].[table2] AS t USING [dbo].[Imported_table1] AS s ON ( t.[field1] = s.[field1] AND t.[field2] = s.[field2] ) WHEN MATCHED THEN UPDATE SET [field3] = s.[field3], [field4] = s.[field4] WHEN NOT MATCHED BY TARGET INSERT ( [field1], [field2], [field3], [field4] ) VALUES ( s.[field1], s.[field2], s.[field3], s.[field4] );
CHill60
Ненавижу констатировать очевидное, но отладили ли вы неисправный пакет?
#realJSOP
Как я уже сказал, пакет работает так, как задумано, и не генерирует никаких предупреждений или ошибок в VS2008...
Bryian Tan
Вы проверяли, фиксируют ли что-то журналы ошибок агента?
#realJSOP
Ошибка заключается в том, что задание содержало предупреждения. Как и все остальное, связанное с SQL server, сообщения являются "загадочными".
CHill60
Значит, в журнале этого пакета есть предупреждающие сообщения? Загадочно или нет, но вы можете поделиться одним из них?
#realJSOP
В том-то и дело. Все, что говорит мне sql, - это то, что есть предупреждения. Он не говорит мне, что это за предупреждения. БД говорят, что они никогда не видели ничего подобного раньше (что не очень хорошо говорит об уровне опыта, на который мы должны полагаться).