¿Es posible, sin fuente de análisis, seleccionar una lista de todos los nombres de sproc que insertan, actualizan o eliminan registros? Necesito crear un script de utilidad TSQL que haga esto. La eficiencia no es un problema, ya que se ejecutará solo unas pocas veces al año (Cursores, quiero decir, los cursores están bien). Idealmente, esta secuencia de comandos no incluiría actualizaciones a tablas de variables locales o temporales.¿Cómo encuentro todos los procedimientos almacenados que insertan, actualizan o eliminan registros?
Intenté la siguiente consulta en SO Question.
SELECT
so.name,
so2.name,
sd.is_updated
from sysobjects so
inner join sys.sql_dependencies sd on so.id = sd.object_id
inner join sysobjects so2 on sd.referenced_major_id = so2.id
where so.xtype = 'p' -- procedure
and
is_updated = 1 -- proc updates table, or at least, I think that's what this means
Pero produce falsos negativos.
El enlace que se incluye la respuesta a esta pregunta ... solo tiene que agregar eliminarlo. –
Todavía estoy obteniendo una tasa de falure de alrededor del 5% incluso en sprocs de actualización. –