Какие операции DML таблица выполняет внутри хранимой процедуры или функций SQL

Я использую SQL Server 2014. У меня есть определенные пользователем таблицы, такие как Customer, PurchaseOrder, User и так далее. Я использую эти таблицы во многих хранимых процедурах. В некоторых случаях эти хранимые процедуры занимают почти 1000/1500 строк.

Теперь я хочу узнать, какие операции (вставка / обновление / удаление) эти таблицы выполняют внутри каждой хранимой процедуры.

Я делаю это вручную. Но это чертовски много усилий. Кроме того, из-за ручного труда я могу что-нибудь пропустить.

Можем ли мы написать SQL-запрос, с помощью которого, не открывая хранимую процедуру, я могу узнать, какую операцию (вставка / обновление / удаление) в ней выполняет определенная таблица.

Заранее спасибо.

1 ответ

Исходя из ваших требований, вы можете найти следующие полезные. Вы можете искать полный текст всех procedures / functions / triggers / views и т.д. и ищите подходящие ключевые слова.

      select Schema_Name(o.schema_id)[schema], o.[name], o.type_desc
from sys.sql_modules m
join sys.objects o on o.object_id=m.object_id
where 
    m.definition like '%insert%customers%' or
    m.definition like '%update%customers%' or
    m.definition like '%delete%customers%' 
order by type_desc, name

Это может помочь вам сузить круг вопросов и определить потенциальные объекты. Само по себе это неточно, так как может быть найдена процедура, в которой вы обновляете orders а затем используйте customers в from или же join впоследствии.

Если у вас есть условности, вы можете положиться на такие, как delete всегда будет delete from customers и нет delete customers или же delete from c from... тогда вы, конечно, можете улучшить соответствие, чтобы повысить релевантность того, что вы найдете.

Такой инструмент, как Redgate's SQLPrompt бесценен здесь, так как вы можете записать все свои имена процедур с префиксом exec , вставьте его в SSMS и сразу же просмотрите весь код каждой процедуры во всплывающем окне.

Другие вопросы по тегам