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

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

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

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

- как вариант.
...
Рейтинг: 0 / 0
09.11.2015, 10:26
    #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
09.11.2015, 11:30
    #39098128
Логирование хранимых процедур
mezzanineinvm,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Service Broker

CLR

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


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