Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Логирование изменений в джобах / 20 сообщений из 20, страница 1 из 1
16.04.2021, 13:22
    #40063032
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
Всем привет.

Есть задача: требуется логировать все изменения в джобах сервера с сохранением новой версии и автора изменений.

Цель: отслеживать кто и что изменил в джобе и при необходимости иметь возможность вернуть исходное значение.

Как можно реализовать данный аудит?
...
Рейтинг: 0 / 0
16.04.2021, 13:32
    #40063039
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
teCa
Всем привет.

Есть задача: требуется логировать все изменения в джобах сервера с сохранением новой версии и автора изменений.

Цель: отслеживать кто и что изменил в джобе и при необходимости иметь возможность вернуть исходное значение.

Как можно реализовать данный аудит?


была такая задачка в прошлом
решил через триггеры на msdb..sysjobs*

не идеально, но помогало отследить кто из ДБА что и где поменял
...
Рейтинг: 0 / 0
16.04.2021, 13:37
    #40063042
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
teCa,

дайте sysadmin только доверенным лицам и этот вопрос сам собой отпадёт.
...
Рейтинг: 0 / 0
16.04.2021, 13:43
    #40063045
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
komrad,

Допустим, я повешу триггер на таблицу, как в этом случае ловить того, кто вносит изменения?

Нельзя ли отслеживать такие изменения через EVENTDATA()?
...
Рейтинг: 0 / 0
16.04.2021, 13:47
    #40063047
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
Владислав Колосов
teCa,

дайте sysadmin только доверенным лицам и этот вопрос сам собой отпадёт.


К сожалению, в нашем случае, каждый разработчик имеет доступ к своим джобам, а зачастую и к чужим.
...
Рейтинг: 0 / 0
16.04.2021, 13:52
    #40063049
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
teCa
komrad,

Допустим, я повешу триггер на таблицу, как в этом случае ловить того, кто вносит изменения?

Нельзя ли отслеживать такие изменения через EVENTDATA()?

попробуйте через original_login()
а в eventdata есть spid
...
Рейтинг: 0 / 0
16.04.2021, 14:05
    #40063051
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
teCa,

лучше всего реорганизовать работу, разработчикам ограничить доступ, все публикуемые изменения версионировать, разработку вести в исходных кодах, а не в базе.
...
Рейтинг: 0 / 0
16.04.2021, 14:48
    #40063067
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
У нас все бизнес джобы хранятся в отдельном проекте. Найти кто и когда поменял джоб так же просто, как и любое другое изменение.
...
Рейтинг: 0 / 0
16.04.2021, 14:50
    #40063069
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
msLex,

Можно подробнее?
...
Рейтинг: 0 / 0
16.04.2021, 15:02
    #40063077
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
teCa
msLex,

Можно подробнее?


Есть SSDT проект с названием SERVICENAME_JOBS в рамках единого solution
В нем каждый джоб в неком виде (добавление параметров джоб в # таблицы) хранится в отдельном файле
В постдеплойменте собираются сначала все эти файлы (через цепочку :r имя_файла), а потом обработчик этих # таблиц, который сравнивает требуемое состояние джобов с тем что есть на сервере, и, при необходимости, заливает разницу через стандартные процедуры msdb.
...
Рейтинг: 0 / 0
16.04.2021, 15:24
    #40063087
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
или как у msLex, или выносить джобы в отдельный оркестратор с логированием (если джобов много, 50+),
или банально дать права на редактирование джобов одному-двум сотрудникам
...
Рейтинг: 0 / 0
16.04.2021, 15:24
    #40063088
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
Пошел простым путем:

Навешал триггер на таблицу msdb..sysjobs, при смене версии джоба, в таблицу лога заносится новый "слепок"

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
SELECT a.[job_id]
      ,b.[originating_server_id]
      ,b.[name]
      ,b.[enabled]
      ,b.[description]
      ,b.[start_step_id]
      ,b.[category_id]
      ,b.[owner_sid]
      ,b.[notify_level_eventlog]
      ,b.[notify_level_email]
      ,b.[notify_level_netsend]
      ,b.[notify_level_page]
      ,b.[notify_email_operator_id]
      ,b.[notify_netsend_operator_id]
      ,b.[notify_page_operator_id]
      ,b.[delete_level]
      ,b.[date_created]
      ,b.[date_modified]
      ,b.[version_number]
      ,[step_id]
      ,[step_name]
      ,[subsystem]
      ,[command]
      ,[flags]
      ,[additional_parameters]
      ,[cmdexec_success_code]
      ,[on_success_action]
      ,[on_success_step_id]
      ,[on_fail_action]
      ,[on_fail_step_id]
      ,[server]
      ,[database_name]
      ,[database_user_name]
      ,[retry_attempts]
      ,[retry_interval]
      ,[os_run_priority]
      ,[output_file_name]
      ,[step_uid]
  FROM [msdb].[dbo].[sysjobsteps] a left join [dbo].[sysjobs] b on a.job_id=b.job_id



Как бы теперь найти, кто внёс изменения?
...
Рейтинг: 0 / 0
16.04.2021, 15:31
    #40063089
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
teCa,

а original_login() не подходит?
...
Рейтинг: 0 / 0
16.04.2021, 15:37
    #40063091
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
komrad,

Не знаком с данной функцией, по описанию не понял, как её применить.
...
Рейтинг: 0 / 0
16.04.2021, 15:42
    #40063093
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
teCa
komrad,

Не знаком с данной функцией, по описанию не понял, как её применить.

так и применять
select original_login()
...
Рейтинг: 0 / 0
16.04.2021, 18:01
    #40063138
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
Спасибо за совет с original_login(), это то что нужно.

Но столкнулся с такой проблемой.

На момент изменения версии таблице sysjobs, изменения в таблице sysjobsteps еще не применились, в итоге в логе получаю половину актуальной версии джоба(sysjobs), а вторую половину предыдущей версии (sysjobsteps).

Есть ли какое то решение для этой задачи? Или триггером писать первую часть, а потом дописывать остальное?
...
Рейтинг: 0 / 0
16.04.2021, 18:03
    #40063139
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
teCa,

по-хорошему, это два разных события - изменение самой джобы и измемение шага джобы
я бы их логировал раздельно
...
Рейтинг: 0 / 0
16.04.2021, 18:50
    #40063155
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
teCa,

авторЕсть ли какое то решение для этой задачи?

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

дайте sysadmin только доверенным лицам и этот вопрос сам собой отпадёт.
Проблема отпадёт, если доверенных лиц <= 1 :-)
...
Рейтинг: 0 / 0
17.04.2021, 19:40
    #40063407
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование изменений в джобах
alexeyvg,

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


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