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

Откуда:
Сообщений: 219
Есть задача логировать обращения к процедурам от внешних сервисов.

Кто-нибудь делал у себя такое?

Вариант логировать на стороне вызывающего сервиса неудобен, их несколько и сложно реализуемо.
Вставлять в каждую процедуру блок логирования тоже трудоемкий, их много. И требует того чтобы помнить об этом при создании новых процедур.
Пытался сделать через EVENT SESSION но неудобно работать с получателем сигналов. Там либо в двоичный файл, но читать его можно только средствами SQL и очень неудобно. Либо получатель ring_buffer, но он тяжелый, медленно выборка идет, плюс чтобы из него забрать данные надо настраивать джоб чтения, а это лишнее звено.

Может еще какие-то варианты есть?
19 дек 18, 11:35    [21768121]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
Alex1975
Может еще какие-то варианты есть?


например, sys.dm_exec_procedure_stats
19 дек 18, 13:42    [21768313]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
Alex1975
Может еще какие-то варианты есть?


https://www.mssqltips.com/sqlservertip/3259/several-methods-to-collect-sql-server-stored-procedure-execution-history/
19 дек 18, 13:46    [21768320]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
Alex1975
Member

Откуда:
Сообщений: 219
komrad
Alex1975
Может еще какие-то варианты есть?


например, sys.dm_exec_procedure_stats


Не подходит. Нужны полные вызовы. Со значением переданных параметров.
19 дек 18, 14:45    [21768408]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2374
Alex1975,

ну или аудит, или "Вставлять в каждую процедуру блок логирования"
19 дек 18, 14:52    [21768421]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
Paul L
Member

Откуда: Город над вольной Невой
Сообщений: 8
Extended events + https://dbatools.io/xevents/ + грузим результат в систему мониторинга или отдельную БД
19 дек 18, 16:37    [21768581]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
Eleanor
Member

Откуда:
Сообщений: 2624
Paul L,

Использовали Data Collection. Логировали все выполняющиеся запросы в БД на том же сервере.
19 дек 18, 17:05    [21768623]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
invm
Member

Откуда: Москва
Сообщений: 9116
Alex1975
Нужны полные вызовы. Со значением переданных параметров.
Пишите служебную процедуру, которая на вход принимает имя процедуры и на основе метаданных будет делать следующее:
1. Переносить процедуру в специальную схему.
2. Генерировать и создавать процедуру с исходным именем и в исходной схеме, которая будет логировать вызов и далее вызывать нужную процедуру в специальной схеме из п.1.

Вызвать такую служебную процедуру для N процедур - дело техники.
19 дек 18, 17:19    [21768638]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
Paul L
Member

Откуда: Город над вольной Невой
Сообщений: 8
Eleanor,
тоже хороший вариант со своими плюсами и, само собой, недостатками.
Правда автор не озвучил @@version (а вдруг там express) и нагрузку.

На серверах с высоким значением batch\sec и тяжелыми запросами полное логирование станет довольно ресурсоемкой штукой, тогда как extended events создают минимальную нагрузку на рабочий инстанс, а их разбор внешними средствами не потребляет ресурсы MSSQL (CPU).
MDW и SSIS\SQLAgentJobs усложняют схему мониторинга, extended events работают (и попадают в мониторинг) пока работает ядро.
И если брать чуть шире задачи автора (аудит запросов): Extended Events "шире" - дают больше событий чем trace.

Сам на части проектов использовал Data Collection, так как можно воткнуть практически "из коробки". Потом перевез на extended events.
19 дек 18, 19:15    [21768787]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
tunknown
Member

Откуда:
Сообщений: 748
Alex1975
Есть задача логировать обращения к процедурам от внешних сервисов.
...
Может еще какие-то варианты есть?
Так и не понял, что нужно. То ли отладить эти внешние сервисы, то ли отладить хранимые процедуры на сервере sql приложений.

Если нужны сами внешние сервисы и ПО позволяет, то не проще ли административно включить на тех машинах ODBC трассировку? Там будут все попытки обращений к серверу, а не только успешные.

Ещё это.
20 дек 18, 09:24    [21769152]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30745
tunknown
Если нужны сами внешние сервисы и ПО позволяет, то не проще ли административно включить на тех машинах ODBC трассировку?
Проще, но логирование сервиса (модуля, сервера, приложения) лучше (правильнее) делать внутри него, а не забирая логи откуда то ещё.
Кто там будет писать сервисы, как, какие команды, кому они будут подчиняться, когда это будет, кто разработчикам скажет о необходимости логирования, кто будет собирать эти новые логи в единую систему, где они в итоге должны лежать и анализироваться?
Многоуровневые/многомодульные приложения придуманы в том числе и для того, что бы команда, отвечающая за модуль, делала его самодостаточным, включая и логирование, если оно нужно.
20 дек 18, 09:48    [21769178]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
Alex1975
Member

Откуда:
Сообщений: 219
автор
Правда автор не озвучил @@version (а вдруг там express) и нагрузку.


Microsoft SQL Server 2014 (SP2-GDR) (KB4019093) - 12.0.5207.0 (X64)
Jul 3 2017 02:25:44
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

Нагрузка порядка 100 тыс. вызовов в минуту.
20 дек 18, 14:49    [21769625]     Ответить | Цитировать Сообщить модератору
 Re: Логирование обращений к серверу  [new]
Владислав Колосов
Member

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

лучший вариант, как показывает практика, логировать на стороне веб-сервиса. Для того, чтобы не помнить, существует объектная модель программирования и проекты.
20 дек 18, 16:45    [21769835]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить