powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Логирование хранимых процедур
25 сообщений из 61, страница 1 из 3
Логирование хранимых процедур
    #39097830
mezzanine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер.
Хотелось бы иметь возможность логирования процесса выполнения хранимых процедур. Например есть процедура "Proc1" которая внутри себя вызывает еще некоторое количество процедур. В них хочу писать что-то вроде "log.Info('....'); log.Error('...')". Потом по таким вещам легко находить проблемы в бизнес логике, конечно если она на T-SQL, а в моем случае это так.
В Оракле использовал фреймворк "Log 4 pl/sql" отличная поделка, допиливалась под нужды. Под MS SQL не смог найти :(
Отсутствие автономных транзакций вообще завело меня в тупик :(
Поделитесь опытом.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39097837
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39097881
mezzanine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Идея интересная. Но как-то чересчур использовать очереди для логирования.

Честно говоря удивлен скудностью функционала, это для версии 2014. В Оракле такие штуки уже не помню сколько лет существуют. Это я так, взгрустнул :)
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39097931
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mezzanine,

просто включить аудит?
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098004
Jovanny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
RAISERROR ... WITH LOG

- как вариант.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098038
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
Jovanny
Код: sql
1.
RAISERROR ... WITH LOG

- как вариант.
Only a member of the sysadmin fixed server role or a user with ALTER TRACE permissions can specify WITH LOG.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098128
mezzanineinvm,

Идея интересная. Но как-то чересчур использовать очереди для логирования.

Какие очереди? Там про sp_trace_generateevent, это собственно и есть генерация пользовательского лога.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098130
mezzanine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
человек_ниоткуда,

Такие очереди:
Код: sql
1.
create queue dbo.qSimpleAudit
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098132
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mezzanineИдея интересная. Но как-то чересчур использовать очереди для логирования.Есть какие-то объективные критерии для такой оценки?
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098137
mezzanine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как писал выше идея в том чтоб логировать бизнес процессы. Идея не новая и широко применяется. Запускается джобом процедура, допустим закрытие дня. Она вызывает много других процедур и естественным требованием должно быть ее полное выполнение (комит) или при ошибке полный откат. После вызова N процедур получить просто exception не выход. Логи в автономной транзакции дают возможность гарантировано получить так сказать мой стек вызова.

Аудит. С его помощью можно контролировать что в процедуре будет логироваться? Например добавление записи типом "Warning" и из 10 входящих параметров залогировать только 3 нужных ну и в таком духе.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098144
mezzanine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Моих нет. Только читал статью как строили репликацию на очереди и были недовольны стабильностью и скоростью.
Как-то много лишних телодвижений, заворачиваем сообщение в XML, отправляется в очередь, процедура выгребает данные из очереди, разворачивает сообщение и наконец то вставляет в таблицу лога.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098208
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mezzanineТолько читал статью как строили репликацию на очереди и были недовольны стабильностью и скоростью.Не допускаете, что авторы просто что-то неправильно делают?
mezzanineКак-то много лишних телодвижений, заворачиваем сообщение в XML, отправляется в очередь, процедура выгребает данные из очереди, разворачивает сообщение и наконец то вставляет в таблицу лога.Вам предложен механизм асинхронного логирования, позволяющий легко включать/выключать и, при желании, пренаправлять логирование на другой сервер/БД, при этом ничего не меняя в коде.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098260
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mezzanine,

Можно написать процедуру только для логирования и вызывать ее в каждой процедуре что бы используете.
Процедура будет писать в какую-то табличку начало и конец бизнес логики и т.п.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098425
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mezzanineinvm,

Идея интересная. Но как-то чересчур использовать очереди для логирования.

Честно говоря удивлен скудностью функционала, это для версии 2014. В Оракле такие штуки уже не помню сколько лет существуют. Это я так, взгрустнул :)

В каком смысле - чересчур? В статье описан штатный внетранзакционный механизм. Тот же "оракловский фреймворк", только вид сбоку.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098502
mezzanine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_human,

Так и хочется сделать. Проблемы в транзакциях. При rollback-е процедуры бизнес логики все логи также исчезнут.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098510
mezzanine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Вполне возможно. Спасибо за предложенный вариант. Буду прикручивать к базе, посмотрю как работает.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098524
mezzanine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно когда нибудь внедрят автономные транзакции, тикет с 2007 года активный Add support for autonomous transactions .
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098526
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mezzanine,

в CATCH можно все отловить. Так же можно заглягуть в лог БД fn_dblog(null,null) за доп. инфо.
Полезная вью - sys.dm_tran_active_transactions
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098542
mezzanine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_human,

Простите, а как это поможет решить проблему с откатом транзакции и необходимостью комита записей лога (все это в одной транзакции)?
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098562
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mezzanine_human,

Простите, а как это поможет решить проблему с откатом транзакции и необходимостью комита записей лога (все это в одной транзакции)?

1. Канешно, кажется удобным наличие возможности журналирования...
2. Но если подумать - это навроде говнокода. Журналы то копятся - место и время жрут.
3. Для запуска транзакции и получения ошибки ПОВТОРНО для анализа достаточно журналировать только ИСХОДНЫЕ параметры транзакции. Что, очевидным образом, можно сделать ВНЕ транзакции.
4. При ошибке просто запускаем транзакцию заново с этими параметрами и лицезреем ошибку.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098579
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks21. Канешно, кажется удобным наличие возможности журналирования... Очень удобно. Иногда полезно логировать всякие штуки, типа времени выполнения конкретного стейтмента и кол-во зааффекченных записей.
aleks22. Но если подумать - это навроде говнокода. Журналы то копятся - место и время жрут.О да, проблема. Решается банальным Sliding Window.
aleks23. Для запуска транзакции и получения ошибки ПОВТОРНО для анализа достаточно журналировать только ИСХОДНЫЕ параметры транзакции. Что, очевидным образом, можно сделать ВНЕ транзакции.
4. При ошибке просто запускаем транзакцию заново с этими параметрами и лицезреем ошибку.Ошибка может быть time-related или еще какая related, а исходными данными может быть буфер на 10кк записей.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098599
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно прикрутить механизм DCT для ограничения времени хранения.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098601
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TDC, то есть.
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098806
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mezzanineВозможно когда нибудь внедрят автономные транзакции, тикет с 2007 года активный Add support for autonomous transactions .

вроде мне расказыали про фокус как это можно реализовать в SQL-server
сделав линк-сервер сам на себя
и делая DML Через его
- но подробностей не скажу
...
Рейтинг: 0 / 0
Логирование хранимых процедур
    #39098837
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Варианты, которые имею право на жизнь:
loopback linked server

Service Broker

CLR

Мы протестили у себя, в наших условиях с небольшим отрывом по производительности победил CLR (на нем и сделали).
...
Рейтинг: 0 / 0
25 сообщений из 61, страница 1 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Логирование хранимых процедур
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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