Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Узнать есть ли запись в таблицы из хранимой процедуры  [new]
QC
Guest
Есть некоторый набор хранимых процедур в которых много кода. Можно ли понять (profiler-ом, extended events или как-то иначе) не анализируя код - происходит ли в этой процедура запись в таблицы базы?
В базе одновременно работает много людей, поэтому просто по изменению размера таблиц не отследить.
10 ноя 17, 12:49    [20943251]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли запись в таблицы из хранимой процедуры  [new]
iiyama
Member

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

запись в таблицы осуществляется операторами UPDATE, INSERT, MERGE

Ваш КО
10 ноя 17, 13:04    [20943314]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли запись в таблицы из хранимой процедуры  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
iiyama
QC,
запись в таблицы осуществляется операторами UPDATE, INSERT, MERGE
Ваш КО
Или вложенными ХП, внутри которых ..... (рекурсия) :)
10 ноя 17, 13:40    [20943489]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли запись в таблицы из хранимой процедуры  [new]
msLex
Member

Откуда:
Сообщений: 7736
LSV
iiyama
QC,
запись в таблицы осуществляется операторами UPDATE, INSERT, MERGE
Ваш КО
Или вложенными ХП, внутри которых ..... (рекурсия) :)

А еще есть триггеры, CLR-ные процедуры и функции, loopback сервера и прочие динамические SQL
10 ноя 17, 13:44    [20943515]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли запись в таблицы из хранимой процедуры  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
iiyama
QC,

запись в таблицы осуществляется операторами UPDATE, INSERT, MERGE

Ваш КО

Ну и еще откатом неудачного DELETE, в каком-то смысле это тоже запись в таблицы базы.
10 ноя 17, 13:59    [20943594]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли запись в таблицы из хранимой процедуры  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
QC,

врубаете SQL SERVER AUDIT и долго думаете, зачем вам вообще это понадобилось :)
10 ноя 17, 14:33    [20943794]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли запись в таблицы из хранимой процедуры  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
в примитивном варианте как то так,

соответственно если вам необходимо дополнительно отлавливать изменения в таблицах фильтры на update, delete, merge

CREATE EVENT SESSION [catch_proclist_insert] ON SERVER 
ADD EVENT sqlserver.sp_statement_completed(SET collect_object_name=(1),collect_statement=(1)
    ACTION(sqlserver.sql_text)
    WHERE (
           [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%INSERT%')
           AND
           [package0].[greater_than_uint64]([row_count],(0))
           AND
           [sqlserver].[equal_i_sql_unicode_string]([sqlserver].[database_name],N'DBNAME')
           AND
           [sqlserver].[like_i_sql_unicode_string]([statement],N'INSERT%')
           AND
           [package0].[greater_than_uint64]([writes],(0))
           AND
           ([object_name]=N'procedure1' OR [object_name]=N'procedure2' OR [object_name]=N'procedure3')
           )
    ) 
ADD TARGET package0.ring_buffer(SET max_memory=(32768))
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
GO


или создаете аудит на insert, update, delete правда с ним придется повозится ибо он вешается по данным событиям на отдельную сущность, придется код писать обширный если необходимо ловить события изменения на всех таблицах БД
10 ноя 17, 14:41    [20943847]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить