Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 контроль ошибки при запуске SSIS пакета  [new]
SerRock
Member

Откуда:
Сообщений: 135
Подскажите, пожалуйста, импортирую данные из *.cvs файла в сиквел табл.
EXEC xp_cmdshell 'dtexec.exe /f "H:\ErrIU\007.dtsx"'
В некоторых случаях импорт проходит с ошибкой.
как отловить в этих случаях, что импорт прошел с ошибкой, ну и обвести программу по другой ветке ...
30 авг 11, 12:15    [11199931]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Например, сконфигурировать соответствующим образом сам пакет, а не его запуск/выполнение.
30 авг 11, 12:17    [11199947]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
SerRock
Member

Откуда:
Сообщений: 135
tpg,
MSDN
При выполнении пакета программа dtexec может вернуть код завершения. Код завершения используется для заполнения переменной ERRORLEVEL, значение которой впоследствии можно будет проверить в условных инструкциях или логике ветвления в пакетном файле. В следующей таблице перечисляются значения, которые программа dtexec может вернуть при завершении.

вопрос, а как получить-то этот самый номер ошибки? как написать это?
30 авг 11, 13:18    [11200428]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
SerRock
tpg,
MSDN
При выполнении пакета программа dtexec может вернуть код завершения. Код завершения используется для заполнения переменной ERRORLEVEL, значение которой впоследствии можно будет проверить в условных инструкциях или логике ветвления в пакетном файле. В следующей таблице перечисляются значения, которые программа dtexec может вернуть при завершении.

вопрос, а как получить-то этот самый номер ошибки? как написать это?
Там про пакетный файл говорится - вас ни на что это не наталкивает?
Ещё раз говорю - при использовании SSIS-пакета лучше (мобильнее, гибче и т.п.) логику обработки ошибки пихать в сам пакет.
Если не нравится так, то пихайте запуск пакета в BAT-файл и в нем обрабатывайте ошибку.
30 авг 11, 13:22    [11200485]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
SerRock
Member

Откуда:
Сообщений: 135
tpg,
нет, я так не понял, как обрабатывать логику в самом пакете. И с конфигурациями тоже ничего не получилось. Я не понимаю, куда что-то можно написать, чем создать файл конфигурации. Есть dtsx файл, созданный мастером, и он открывается sql manager-ом с перечнем опций, можно загрузить файл конфигурации, но как его создать, не знаю (xml не подходит по расширению, можно только *.dtsconfig), примеров структуры конфигурационного xml файла в разрезе анализа ошибки тоже не нашел, хотя в msdn много чего написано ... В общем, вроде и понимаю как и что, а как - ни в какую ... :)
30 авг 11, 15:31    [11201573]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
ivan22
Guest
автор
Есть dtsx файл, созданный мастером

ну а ты потрудись вместо мастера немного
30 авг 11, 17:09    [11202352]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
SerRock
Member

Откуда:
Сообщений: 135
ivan22,
лучше бы ссылочку полезную дал, а умничать ...
30 авг 11, 20:25    [11203249]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
SerRock
ivan22,
лучше бы ссылочку полезную дал, а умничать ...

У вас как в пакете настроено его логирование?
Какой SSIS Logs провайдер выбран?
Обычно используется Windows Event Log. Уж событие OnError точно должно логироваться.
Посмотрите Windows Application Log. Там должна быть вся информация о событии OnError
С уважением, Алексей
31 авг 11, 10:31    [11204475]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
SerRock
tpg,
нет, я так не понял, как обрабатывать логику в самом пакете. И с конфигурациями тоже ничего не получилось. Я не понимаю, куда что-то можно написать, чем создать файл конфигурации. Есть dtsx файл, созданный мастером, и он открывается sql manager-ом с перечнем опций, можно загрузить файл конфигурации, но как его создать, не знаю (xml не подходит по расширению, можно только *.dtsconfig), примеров структуры конфигурационного xml файла в разрезе анализа ошибки тоже не нашел, хотя в msdn много чего написано ... В общем, вроде и понимаю как и что, а как - ни в какую ... :)
Вы хоть пакет то в вижуал студии открывали?
31 авг 11, 10:56    [11204574]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
Mgvlad
Member

Откуда: Минск
Сообщений: 97
SerRock,

Самый простой способ отследить ошибку показан на скрине. По зилёной стрелочке выполнение пойдёт если всё успешно закончилось, по красной - если с ошибкой. ScriptTask указан для примера, там можно применить любой другой таск, например SendEmailTask.

К сообщению приложен файл. Размер - 15Kb
31 авг 11, 11:02    [11204607]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
Mgvlad
Member

Откуда: Минск
Сообщений: 97
SerRock,

Кроме всего прочего если пакет запускается джобом - джоб сам отследит результат выполнения и там есть возможность применить разные варианты развития событий.
31 авг 11, 11:13    [11204665]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
SerRock
Member

Откуда:
Сообщений: 135
Mgvlad,

я пошел по пути конфигурирования пакета в VS, получилось отправлять сообщение на адрес при ошибке импорта, но только прямым вводом текста в SourceMessage, а вот положить в сообщение error.desctiption - ну, никак ... я пытался переменную, засунуть туда System::ErrorDescription, однако в логе он мне пишет, что такая переменная не найдена или переименована ...
При импорте 3 ошибки формируется, и ни одна не отработала

P.S. всем огромное спасибо за подсказки и ореентацию в пространстве ... :) х 5
8 сен 11, 19:29    [11250329]     Ответить | Цитировать Сообщить модератору
 Re: контроль ошибки при запуске SSIS пакета  [new]
Mgvlad
Member

Откуда: Минск
Сообщений: 97
SerRock, могу предложить задействовать ScriptTask для простого выполнения команды BulkInsert. Там всего пару строчек

Try
{
 string sql = "bulk insert ЦЕЛЕВАЯ_ТАБЛИЧКА from 'ПОДГОТОВЛЕННЫЙ_ФАЙЛ' WITH (FIELDTERMINATOR = '|', ROWTERMINATOR = '\\n', firstrow=1)"; 
                   
                 SqlConnection Conn = new SqlConnection(ConnectionString к SQL); 
                 Conn.Open(); //Открываем соединение
                 SqlCommand Cmd = new SqlCommand(sql, Conn);
                 Cmd.ExecuteNonQuery(); // выполняем вставку
}
catch (Exception ex)
{
Dts.Variables["ПЕРЕМЕННАЯ_ДЛЯ_ОШИБКИ"].Value = ex.Message; // загоняем в переменную ошибку
Dts.TaskResult = (int)ScriptResults.Failure; //направляем выполнение по красной стрелке
}
Важно - переменная ПЕРЕМЕННАЯ_ДЛЯ_ОШИБКИ в свойствах таска должны быть помечена как ReadWrite.
Важно2 - Приведённый код работает для 2008. в SQL2005 надо тоже самое писать на VB.

Ну а дальше, при помощи выражения в SendMail, вставляем из переменной ошибку в тело письма.

Как-то так..
9 сен 11, 10:49    [11252177]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить