Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сохранение Insert`а после транзакции / 8 сообщений из 8, страница 1 из 1
10.10.2014, 17:41
    #38773606
Wrun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение Insert`а после транзакции
Добрый день!

Подскажите, как правильно организовать следующее:

У меня процедура (транзакционная) выполняет по шагам много действий (других процедур).
В этих шагах могут возникнуть ошибки (как критичные, так и идеологические), в следствии которых я вызываю rollback.
Только вот охота сохранять протокол который был высчитан внутри транзакции.
Т.е. это обычный Select, который самое простое было бы Insert`нуть в протокол таблицу, но ведь транзакция это действие откатит.

Как поступать в таком случае?
...
Рейтинг: 0 / 0
10.10.2014, 17:49
    #38773621
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение Insert`а после транзакции
Wrun, сохраняете данные в локальную табличную переменную, которую вставляете в лог уже после ролбэка/коммита
...
Рейтинг: 0 / 0
10.10.2014, 18:19
    #38773651
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение Insert`а после транзакции
Wrun,

В MSSQL нет автономных транзакций, поэтому вариантов два
Первый, как уже сказали, использовать табличные переменные.
Второе, сделать логирование через CLR, в котором можно использовать независимые транзакции.
...
Рейтинг: 0 / 0
10.10.2014, 18:46
    #38773687
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение Insert`а после транзакции
msLexWrun,

В MSSQL нет автономных транзакций, поэтому вариантов два
Первый, как уже сказали, использовать табличные переменные.
Второе, сделать логирование через CLR, в котором можно использовать независимые транзакции.

Третий вариант использовать SSIS, где уже есть логированние ошибок и отчёты для их просмотра.
...
Рейтинг: 0 / 0
10.10.2014, 18:58
    #38773703
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение Insert`а после транзакции
a_voroninmsLexWrun,

В MSSQL нет автономных транзакций, поэтому вариантов два
Первый, как уже сказали, использовать табличные переменные.
Второе, сделать логирование через CLR, в котором можно использовать независимые транзакции.

Третий вариант использовать SSIS, где уже есть логированние ошибок и отчёты для их просмотра.
Какой SSIS?
Пользователь в приложении жмакнул на кнопку "провести документ", хочется пологировать какие операции и сколько при этом выполнялись даже в случае ошибки.
...
Рейтинг: 0 / 0
10.10.2014, 18:59
    #38773705
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение Insert`а после транзакции
RAISERROR ... WITH LOG
xp_logevent
...
Рейтинг: 0 / 0
10.10.2014, 19:15
    #38773723
Wrun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение Insert`а после транзакции
ShakillWrun, сохраняете данные в локальную табличную переменную, которую вставляете в лог уже после ролбэка/коммита

Т.е. Переменные не очищаются транзакцией (извиняюсь за лень - не тестировал, нет компа под рукой...)
...
Рейтинг: 0 / 0
10.10.2014, 20:20
    #38773757
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение Insert`а после транзакции
WrunShakillWrun, сохраняете данные в локальную табличную переменную, которую вставляете в лог уже после ролбэка/коммита
Т.е. Переменные не очищаются транзакцией (извиняюсь за лень - не тестировал, нет компа под рукой...)Да
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сохранение Insert`а после транзакции / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]