Atención, nunca borre o elimine un stored procedure basandose en este query, ya que este query indica solamente si el sp está en el cache, lo cual no significa necesariamente que no se utiliza, por caso si un S.P. tiene las sentencias RECOMPILE, nunca jamás aparecerá en el cache a pesar de ser plenamente utilizado.
Y recuerde que en vez de eliminar un S.P. debería renombrarlo con algún prefijo que identifique claramente a los SPs a investigar en el entorno de testing y luego hacer las pruebas correspondientes en entornos de testing y de pruebas para ver si ese S.P. es usado o no. Y obviamente, luego de todas esas pruebas y como medida de seguridad adicional, antes de borrar un S.P. en producción se debe guardar un script con toda la lógica.
Dicho lo anterior, veamos los scripts:
-- Obtengo una lista de SPs en la base de datos (SQL 2005 and 2008) SELECT p.name AS 'SP Name', p.create_date, p.modify_date FROM sys.procedures AS p WHERE p.is_ms_shipped = 0 ORDER BY p.name; -- Obtener una lista de SPs posiblemente no usados (SQL 2008 solamente) SELECT p.name AS 'SP Name' FROM sys.procedures AS p WHERE p.is_ms_shipped = 0 EXCEPT SELECT p.name AS 'SP Name' -- Lista de SPs en la base actual FROM sys.procedures AS p -- que están en el procedure cache INNER JOIN sys.dm_exec_procedure_stats AS qs ON p.object_id = qs.object_id WHERE p.is_ms_shipped = 0;
Adicionalmente usted puede usar el siguiente query (solamente SQL Server 2008) para determinar las dependencias de un objeto.
SELECT referencing_schema_name, referencing_entity_name FROM sys.dm_sql_referencing_entities (‘Person.Address’, 'OBJECT'); Estos consejos son dados "AS IS" "TAL COMO ESTÁN", no doy ni concedo explicita o implicitamente garantía alguna acerca de estos scripts, queries y consejos, ni de su funcionalidad ni utilidad y su uso queda bajo la exclusiva responsabilidad de un Administrador de Bases de Datos competente y experimentado, toda responsabilidad por daños alguno o el mal uso de los mismos queda bajo la responsabilidad exclusiva de dicho administrador y se da por entendido que las bases de Datos SQL Server deben ser administradas por profesionales expertos en dicha tecnología. No me hago cargo de modo alguno por daños en datos, sistemas y servidores o similes por el uso de este o cualquier otro artículo de este blog.
Hugo Román Bernachea
Mail de contacto: SQLServer777@gmail.com
Microsoft Certified DBA
Microsoft Certified Trainer
Twitter: @bernachea
3 comentarios:
cuando escriviste "experimentado" en lugar de "esperimentado" ya no te tuve confiansa jajaja
Yo tampoco te tendría confianza anónimo, ya que es "escribiste" y no "escriviste"
jajajaja! me hicieron reir!
Publicar un comentario