|
Отследить событие
|
|||
---|---|---|---|
#18+
Доброго здоровья! Стоит задача отловить и зафиксировать запросы вида: RPC:completed exec sp_executesql N'UPDATE T1 SET _UseSplitter = @P1 FROM dbo._AccumRgOpt15652 T1 WHERE (T1._RegID = @P2) AND (T1._Fld770 = @P3)',N'@P1 varbinary(1),@P2 varbinary(8000),@P3 numeric(10)',0x01,0x3DD77835E17A41418B58BB2FD64C39BA,0 Цветом выделены то, что может изменяться. Таблицы и числовые значения. Вопрос: как это сделать лучше всего? Триггер сделать, но у меня таблиц за которыми следить таким образом надо штук 40, это штук 40 триггеров надо получается? Как это скажется на нагрузке на сервер? С помощью расширенных событий если, то не нашел как настроить фильтр именно на этот запрос. Все подряд собирать, думаю не лучшая идея. Подскажите пожалуйста, голова опухает если честно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2021, 16:05 |
|
Отследить событие
|
|||
---|---|---|---|
#18+
Grogan Доброго здоровья! Стоит задача отловить и зафиксировать запросы вида: RPC:completed exec sp_executesql N'UPDATE T1 SET _UseSplitter = @P1 FROM dbo._AccumRgOpt15652 T1 WHERE (T1._RegID = @P2) AND (T1._Fld770 = @P3)',N'@P1 varbinary(1),@P2 varbinary(8000),@P3 numeric(10)',0x01,0x3DD77835E17A41418B58BB2FD64C39BA,0 Цветом выделены то, что может изменяться. Таблицы и числовые значения. Вопрос: как это сделать лучше всего? Триггер сделать, но у меня таблиц за которыми следить таким образом надо штук 40, это штук 40 триггеров надо получается? Как это скажется на нагрузке на сервер? С помощью расширенных событий если, то не нашел как настроить фильтр именно на этот запрос. Все подряд собирать, думаю не лучшая идея. Подскажите пожалуйста, голова опухает если честно. Что такое 40 таблиц? Ерунда. Но триггер - оно надежнее. А "событие" можно объехать на хромой козе. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2021, 13:42 |
|
Отследить событие
|
|||
---|---|---|---|
#18+
Если версия или редакция позволяют то аудит https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver15 Построен на базе extended events ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2021, 17:36 |
|
Отследить событие
|
|||
---|---|---|---|
#18+
Спасибо за ответы! Опыта мало к сожалению, поэтому получилось пока так сделать: CREATE EVENT SESSION [Audit] ON SERVER ADD EVENT sqlserver.rpc_completed(SET collect_data_stream=(1),collect_output_parameters=(1),collect_statement=(1) ACTION(sqlos.task_address,sqlos.task_elapsed_quantum,sqlos.task_time,sqlserver.client_app_name,sqlserver.context_info,sqlserver.database_name,sqlserver.request_id,sqlserver.server_instance_name,sqlserver.server_principal_name,sqlserver.server_principal_sid,sqlserver.session_resource_group_id,sqlserver.session_resource_pool_id,sqlserver.session_server_principal_name,sqlserver.sql_text,sqlserver.transaction_id,sqlserver.transaction_sequence,sqlserver.username) WHERE (((([sqlserver].[equal_i_sql_unicode_string]([sqlserver].[database_name],N'DataBase')) AND([sqlserver].[equal_i_sql_unicode_string]([statement],N'exec sp_executesql N''UPDATE T1 SET _UseSplitter = @P1 FROM dbo._AccumRgOpt15652 T1 WHERE (T1._RegID = @P2) AND (T1._Fld770 = @P3)'',N''@P1 varbinary(1),@P2 varbinary(8000),@P3 numeric(10)'',0x01,0x3DD77835E17A41418B58BB2FD64C39BA,0')))OR ([sqlserver].[equal_i_sql_unicode_string]([statement],N'exec sp_executesql N''UPDATE T1 SET _UseSplitter = @P1 FROM dbo._AccumRgOpt25155 T1 WHERE (T1._RegID = @P2) AND (T1._Fld770 = @P3)'',N''@P1 varbinary(1),@P2 varbinary(8000),@P3 numeric(10)'',0x00,0x6BC52073D472D84EA1442D19230BB538,0')))OR ([sqlserver].[equal_i_sql_unicode_string]([statement],N'exec sp_executesql N''UPDATE T1 SET _UseSplitter = @P1 FROM dbo._AccumRgOpt15700 T1 WHERE (T1._RegID = @P2) AND (T1._Fld770 = @P3)'',N''@P1 varbinary(1),@P2 varbinary(8000),@P3 numeric(10)'',0x00,0x61D7A2B5D82E1F46A73B314EDBC411D1,0')))OR ([sqlserver].[equal_i_sql_unicode_string]([statement],N'exec sp_executesql N''UPDATE T1 SET _UseSplitter = @P1 FROM dbo._AccumRgOpt15701 T1 WHERE (T1._RegID = @P2) AND (T1._Fld770 = @P3)'',N''@P1 varbinary(1),@P2 varbinary(8000),@P3 numeric(10)'',0x00,0xCD37C20DA145F343BAACAE0B3FA22AF7,0')))OR ([sqlserver].[equal_i_sql_unicode_string]([statement],N'exec sp_executesql N''UPDATE T1 SET _UseSplitter = @P1 FROM dbo._AccumRgOpt15651 T1 WHERE (T1._RegID = @P2) AND (T1._Fld770 = @P3)'',N''@P1 varbinary(1),@P2 varbinary(8000),@P3 numeric(10)'',0x00,0x1C0A0641CB09AA498D5697BB3A4075BF,0'))) .... Go По каким то причинам не могу более трех фильтров вида: ([sqlserver].[equal_i_sql_unicode_string]([statement],N'exec sp_executesql N''UPDATE T1 SET _UseSplitter = @P1 FROM dbo._AccumRgOpt15701 T1 WHERE (T1._RegID = @P2) AND (T1._Fld770 = @P3)'',N''@P1 varbinary(1),@P2 varbinary(8000),@P3 numeric(10)'',0x00,0xCD37C20DA145F343BAACAE0B3FA22AF7,0'))) Добавить не могу. Появляется значек, как будто это процедура или функция и выдает ошибку. Подскажите пожалуйтса в чем дело? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 01:49 |
|
Отследить событие
|
|||
---|---|---|---|
#18+
Интересно, тредстартер знает, что обновление данных в таблице можно провести через merge или его запрос переписать так, что под фильтр он не попадет? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 05:39 |
|
Отследить событие
|
|||
---|---|---|---|
#18+
aleks222 Интересно, тредстартер знает, что обновление данных в таблице можно провести через merge или его запрос переписать так, что под фильтр он не попадет? Это 1с. Там ничего такого быть не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 10:00 |
|
Отследить событие
|
|||
---|---|---|---|
#18+
aleks222 Интересно, тредстартер знает, что обновление данных в таблице можно провести через merge или его запрос переписать так, что под фильтр он не попадет? Теперь знает. Но к созданию аудита посредством расширенных событий пока не приблизился. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 10:08 |
|
Отследить событие
|
|||
---|---|---|---|
#18+
VladimirKr aleks222 Интересно, тредстартер знает, что обновление данных в таблице можно провести через merge или его запрос переписать так, что под фильтр он не попадет? Это 1с. Там ничего такого быть не может. Все верно. Это 1с. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 10:08 |
|
Отследить событие
|
|||
---|---|---|---|
#18+
Так никто и не подскажет почему больше 3х фильтров не влазиет в скрипт? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 13:09 |
|
Отследить событие
|
|||
---|---|---|---|
#18+
VladimirKr aleks222 Интересно, тредстартер знает, что обновление данных в таблице можно провести через merge или его запрос переписать так, что под фильтр он не попадет? Это 1с. Там ничего такого быть не может. Ну, не фсе хакеры останавливаются на уровне 1с. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 13:19 |
|
Отследить событие
|
|||
---|---|---|---|
#18+
Grogan Так никто и не подскажет почему больше 3х фильтров не влазиет в скрипт? читайте документацию: https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-event-session-transact-sql?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 13:40 |
|
|
start [/forum/topic.php?fid=46&fpage=34&tid=1685081]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 391ms |
total: | 565ms |
0 / 0 |