#realJSOP Ответов: 1

Ошибка агента 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, - это то, что есть предупреждения. Он не говорит мне, что это за предупреждения. БД говорят, что они никогда не видели ничего подобного раньше (что не очень хорошо говорит об уровне опыта, на который мы должны полагаться).

1 Ответов

Рейтинг:
1

S Douglas

Excel и SSIS ... проклятие моего существования. Моя первая догадка состояла бы в том, что SSIS читает типы данных одним способом, когда находится в VS, а другим-когда работает от агента (я знаю, что это звучит не логично, но это обычное явление; excel любит творчески подходить к своим данным).

Несмотря на то, что предупреждающие сообщения являются загадочными, если вы можете опубликовать их, это может помочь понять, в чем заключается основная причина.