¿Cómo puedo identificar rápidamente los procedimientos almacenados modificados más recientemente en SQL Server?

StackOverflow https://stackoverflow.com/questions/85036

Pregunta

Necesito migrar manualmente los procedimientos almacenados modificados desde una instancia de base de datos DEV SQL Server 2005 a una instancia de PRUEBA.Excepto por los cambios que estoy migrando, las bases de datos tienen los mismos esquemas.¿Cómo puedo identificar rápidamente qué procedimientos almacenados se han modificado en la base de datos DEV para migrarlos a la instancia TEST?

Supongo que puedo escribir una consulta en algunas de las tablas del sistema para ver los objetos de la base de datos de tipo procedimiento almacenado, ordenándolos por algún tipo de datos compilados o modificados por última vez, pero no estoy seguro.Tal vez haya algún tipo de utilidad gratuita que alguien pueda indicarme.

Gracias de antemano,

Beto

¿Fue útil?

Solución

en lugar de usar sysobjects, que ya no se recomienda, use sys.procedures

select name,create_date,modify_date
from sys.procedures
order by modify_date desc

Puede hacer la cláusula Where usted mismo, pero esto la enumerará en orden de fecha de modificación descendente.

Otros consejos

Bob OMalley probablemente resolvió su problema hace mucho tiempo, pero esperamos que los nuevos lectores lo encuentren útil.

Hay algunos casos especiales en los que es posible que los scripts no den resultados óptimos.

Uno es eliminar procedimientos almacenados u otros objetos en el entorno de desarrollo; no detectará esto usando las vistas del sistema porque el objeto ya no existirá allí.

Además, no estoy realmente seguro de que este enfoque pueda funcionar con cambios como permisos y similares.

En tales casos, es mejor utilizar alguna herramienta de terceros para comprobar que no se haya perdido nada.

He utilizado con éxito Diferencia de ApexSQL en el pasado para tareas similares y funcionó muy bien en bases de datos grandes con más de 1000 objetos, pero no puedes equivocarte con SQL Compare que ya se menciona aquí o básicamente con cualquier otra herramienta que exista en el mercado.

Descargo de responsabilidad:No estoy afiliado a ninguno de los proveedores que menciono aquí, pero uso ambos conjuntos de herramientas (Apex y RG) en la empresa para la que trabajo.

Puede ejecutar esta consulta para encontrar todos los procedimientos almacenados modificados en los últimos x días:

SELECT name
FROM sys.objects
WHERE type = 'P'
    AND DATEDIFF(D,modify_date, GETDATE()) < X

Aunque no es gratuito, he tenido buena experiencia usando Red-Gates. Herramienta de comparación SQL.Funcionó para mí en el pasado.Tienen una prueba gratuita disponible que puede ser lo suficientemente buena para resolver su problema actual.

También puedes usar el siguiente fragmento de código.

USE AdventureWorks2008;

GO

SELECT SprocName=name, create_date, modify_date

FROM sys.objects

WHERE type = 'P' 

AND name = 'uspUpdateEmployeeHireInfo'

GO

Puede utilizar el siguiente tipo de consulta para encontrar procedimientos almacenados modificados, puede utilizar cualquier número y luego 7 según sus necesidades

Seleccione el nombre de SYS.Objects Where type = 'P' y Datediff (D, Modify_Date, GetDate ()) <7

Existen varias herramientas de comparación de bases de datos.Uno que siempre me ha gustado es SQLCompare por puerta roja.

También puedes intentar usar:

SELECT name
FROM sys.objects
WHERE modify_date > @cutoffdate

En SQL 2000 eso no siempre habría funcionado, porque el uso de ALTER no actualizaba la fecha correctamente, pero en 2005 creo que el problema se solucionó.

Yo también uso una herramienta de comparación de SQL, por lo que no puedo garantizar ese método al 100%.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top