Какие операции 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 и сразу же просмотрите весь код каждой процедуры во всплывающем окне.