powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Логирование изменений в джобах
20 сообщений из 20, страница 1 из 1
Логирование изменений в джобах
    #40063032
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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


Есть SSDT проект с названием SERVICENAME_JOBS в рамках единого solution
В нем каждый джоб в неком виде (добавление параметров джоб в # таблицы) хранится в отдельном файле
В постдеплойменте собираются сначала все эти файлы (через цепочку :r имя_файла), а потом обработчик этих # таблиц, который сравнивает требуемое состояние джобов с тем что есть на сервере, и, при необходимости, заливает разницу через стандартные процедуры msdb.
...
Рейтинг: 0 / 0
Логирование изменений в джобах
    #40063087
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или как у msLex, или выносить джобы в отдельный оркестратор с логированием (если джобов много, 50+),
или банально дать права на редактирование джобов одному-двум сотрудникам
...
Рейтинг: 0 / 0
Логирование изменений в джобах
    #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
Логирование изменений в джобах
    #40063089
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

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

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

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

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

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

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

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

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

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

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

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

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


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