|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
Добрый вечер. Хотелось бы иметь возможность логирования процесса выполнения хранимых процедур. Например есть процедура "Proc1" которая внутри себя вызывает еще некоторое количество процедур. В них хочу писать что-то вроде "log.Info('....'); log.Error('...')". Потом по таким вещам легко находить проблемы в бизнес логике, конечно если она на T-SQL, а в моем случае это так. В Оракле использовал фреймворк "Log 4 pl/sql" отличная поделка, допиливалась под нужды. Под MS SQL не смог найти :( Отсутствие автономных транзакций вообще завело меня в тупик :( Поделитесь опытом. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 22:21 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
invm, Идея интересная. Но как-то чересчур использовать очереди для логирования. Честно говоря удивлен скудностью функционала, это для версии 2014. В Оракле такие штуки уже не помню сколько лет существуют. Это я так, взгрустнул :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 01:12 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
mezzanine, просто включить аудит? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 07:45 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
Код: sql 1.
- как вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 09:55 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
Jovanny Код: sql 1.
- как вариант. Only a member of the sysadmin fixed server role or a user with ALTER TRACE permissions can specify WITH LOG. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 10:26 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
mezzanineinvm, Идея интересная. Но как-то чересчур использовать очереди для логирования. Какие очереди? Там про sp_trace_generateevent, это собственно и есть генерация пользовательского лога. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 11:30 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
человек_ниоткуда, Такие очереди: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 11:33 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
mezzanineИдея интересная. Но как-то чересчур использовать очереди для логирования.Есть какие-то объективные критерии для такой оценки? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 11:37 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
Как писал выше идея в том чтоб логировать бизнес процессы. Идея не новая и широко применяется. Запускается джобом процедура, допустим закрытие дня. Она вызывает много других процедур и естественным требованием должно быть ее полное выполнение (комит) или при ошибке полный откат. После вызова N процедур получить просто exception не выход. Логи в автономной транзакции дают возможность гарантировано получить так сказать мой стек вызова. Аудит. С его помощью можно контролировать что в процедуре будет логироваться? Например добавление записи типом "Warning" и из 10 входящих параметров залогировать только 3 нужных ну и в таком духе. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 11:41 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
invm, Моих нет. Только читал статью как строили репликацию на очереди и были недовольны стабильностью и скоростью. Как-то много лишних телодвижений, заворачиваем сообщение в XML, отправляется в очередь, процедура выгребает данные из очереди, разворачивает сообщение и наконец то вставляет в таблицу лога. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 11:46 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
mezzanineТолько читал статью как строили репликацию на очереди и были недовольны стабильностью и скоростью.Не допускаете, что авторы просто что-то неправильно делают? mezzanineКак-то много лишних телодвижений, заворачиваем сообщение в XML, отправляется в очередь, процедура выгребает данные из очереди, разворачивает сообщение и наконец то вставляет в таблицу лога.Вам предложен механизм асинхронного логирования, позволяющий легко включать/выключать и, при желании, пренаправлять логирование на другой сервер/БД, при этом ничего не меняя в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 12:22 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
mezzanine, Можно написать процедуру только для логирования и вызывать ее в каждой процедуре что бы используете. Процедура будет писать в какую-то табличку начало и конец бизнес логики и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 12:49 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
mezzanineinvm, Идея интересная. Но как-то чересчур использовать очереди для логирования. Честно говоря удивлен скудностью функционала, это для версии 2014. В Оракле такие штуки уже не помню сколько лет существуют. Это я так, взгрустнул :) В каком смысле - чересчур? В статье описан штатный внетранзакционный механизм. Тот же "оракловский фреймворк", только вид сбоку. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 14:28 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
_human, Так и хочется сделать. Проблемы в транзакциях. При rollback-е процедуры бизнес логики все логи также исчезнут. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:15 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
invm, Вполне возможно. Спасибо за предложенный вариант. Буду прикручивать к базе, посмотрю как работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:18 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
Возможно когда нибудь внедрят автономные транзакции, тикет с 2007 года активный Add support for autonomous transactions . ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:23 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
mezzanine, в CATCH можно все отловить. Так же можно заглягуть в лог БД fn_dblog(null,null) за доп. инфо. Полезная вью - sys.dm_tran_active_transactions ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:24 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
_human, Простите, а как это поможет решить проблему с откатом транзакции и необходимостью комита записей лога (все это в одной транзакции)? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:32 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
mezzanine_human, Простите, а как это поможет решить проблему с откатом транзакции и необходимостью комита записей лога (все это в одной транзакции)? 1. Канешно, кажется удобным наличие возможности журналирования... 2. Но если подумать - это навроде говнокода. Журналы то копятся - место и время жрут. 3. Для запуска транзакции и получения ошибки ПОВТОРНО для анализа достаточно журналировать только ИСХОДНЫЕ параметры транзакции. Что, очевидным образом, можно сделать ВНЕ транзакции. 4. При ошибке просто запускаем транзакцию заново с этими параметрами и лицезреем ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:44 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
aleks21. Канешно, кажется удобным наличие возможности журналирования... Очень удобно. Иногда полезно логировать всякие штуки, типа времени выполнения конкретного стейтмента и кол-во зааффекченных записей. aleks22. Но если подумать - это навроде говнокода. Журналы то копятся - место и время жрут.О да, проблема. Решается банальным Sliding Window. aleks23. Для запуска транзакции и получения ошибки ПОВТОРНО для анализа достаточно журналировать только ИСХОДНЫЕ параметры транзакции. Что, очевидным образом, можно сделать ВНЕ транзакции. 4. При ошибке просто запускаем транзакцию заново с этими параметрами и лицезреем ошибку.Ошибка может быть time-related или еще какая related, а исходными данными может быть буфер на 10кк записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 15:54 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
Можно прикрутить механизм DCT для ограничения времени хранения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 16:09 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
TDC, то есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 16:10 |
|
Логирование хранимых процедур
|
|||
---|---|---|---|
#18+
mezzanineВозможно когда нибудь внедрят автономные транзакции, тикет с 2007 года активный Add support for autonomous transactions . вроде мне расказыали про фокус как это можно реализовать в SQL-server сделав линк-сервер сам на себя и делая DML Через его - но подробностей не скажу ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 18:58 |
|
|
start [/forum/topic.php?fid=46&msg=39098130&tid=1685869]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 168ms |
0 / 0 |