¿Alguien sabe de una forma de verificar la exactitud de las consultas en todos los procedimientos almacenados en una base de datos? Estoy pensando en el escenario donde si modificas algo en un archivo de código, simplemente haciendo una reconstrucción mostraría errores de compilación que te dirigen a lugares donde necesitas arreglar cosas. En un escenario de base de datos, por ejemplo, si modifica una tabla y elimina una columna que se utiliza en un procedimiento almacenado, no sabrá nada sobre este problema hasta la primera vez que se ejecute dicho procedimiento.Analizar todos los procedimientos almacenados en una base de datos
Respuesta
Lo que usted describe es para qué sirve la prueba unitaria. Los procedimientos y funciones almacenados a menudo requieren el establecimiento de parámetros, y si el procedimiento o función almacenada encapsula SQL dinámico, existe la posibilidad de que se pierda un caso de [esquina].
Además, todo lo que menciona es comprobar si hay errores básicos, nada sobre la validación de los datos devueltos. Por ejemplo, puedo cambiar la precisión en una columna numérica ...
Esto también entra en las pruebas básicas que deben ocurrir para el problema inmediato, y las pruebas de regresión para garantizar que no haya problemas imprevistos.
Puede crear todos sus objetos con SCHEMABINDING, lo que le impediría cambiar las tablas subyacentes sin descartar y volver a crear las vistas y los procedimientos creados sobre ellos.
Dependiendo de su proceso de desarrollo, esto podría ser bastante engorroso. Sin embargo, lo ofrezco como una solución, porque si quieres garantizar la exactitud de todos los procedimientos en la base de datos, esto lo haría.
Encontré este ejemplo en MSDN (SQL Server 2012). Creo que se puede utilizar en algunos escenarios:
USE AdventureWorks2012;
GO
SELECT p.name, r.*
FROM sys.procedures AS p
CROSS APPLY sys.dm_exec_describe_first_result_set_for_object(p.object_id, 0) AS r;
- 1. Concesión de permiso de ejecución en todos los procedimientos almacenados en una determinada base de datos
- 2. ¿Cómo contar todos los procedimientos almacenados en el Servidor SQL para una base de datos?
- 3. ¿Cómo puedo descargar todos los procedimientos almacenados desde una base de datos específica?
- 4. Escritura de todos los procedimientos almacenados en Management Studio 2005
- 5. de consulta a la lista todos los procedimientos almacenados
- 6. Manera simple de obtener todos los procedimientos almacenados mediante programación
- 7. Eliminar todos los procedimientos almacenados en MySQL o usar procedimientos almacenados temporales
- 8. Encontrar todos los procedimientos almacenados Llamada a una función
- 9. C#/SQL Obtenga todos los procedimientos almacenados y su código
- 10. ¿Cómo encontrar los procedimientos almacenados por nombre?
- 11. ¿Otorgar permiso de ejecución para un usuario en todos los procedimientos almacenados en la base de datos?
- 12. ¿Cómo se eliminan todos los procedimientos almacenados a la vez en la base de datos de SQL Server?
- 13. ¿El SQL formado dinámicamente en los procedimientos almacenados niega el propósito mismo de los procedimientos almacenados?
- 14. Cómo identificar todos los procedimientos almacenados haciendo referencia a una tabla en particular
- 15. MySQL: ¿Cómo modificar los procedimientos almacenados atómicamente?
- 16. ¿Cuándo debo usar los procedimientos almacenados?
- 17. SQL Server: Migrar procedimientos almacenados entre bases de datos, instancias
- 18. Versiones de procedimientos almacenados
- 19. encontrar todas las tablas no referenciadas en los procedimientos almacenados
- 20. SQL para buscar objetos, incluidos los procedimientos almacenados, en Oracle
- 21. Cómo encontrar el número de procedimientos almacenados, tablas, funciones presentes en una base de datos
- 22. Lista de todos los procedimientos almacenados con el nombre de esquema
- 23. Cómo cambiar el nombre de esquema de una tabla en todos los procedimientos almacenados
- 24. Búsqueda de texto dentro de los procedimientos almacenados de Oracle
- 25. MySQL: Vistas vs Procedimientos almacenados
- 26. Procedimientos almacenados y funciones
- 27. ¿La mejor manera de aprender los procedimientos almacenados de PostgreSQL?
- 28. ¿Los procedimientos almacenados bloquean las tablas/filas?
- 29. Procedimientos almacenados/esquema de base de datos en el control de código fuente
- 30. procedimientos almacenados con sqlAlchemy
posible duplicado de (http [¿Cómo puedo comprobar mediante programación (análisis sintáctico) la validez de una declaración TSQL?]: // stackoverflow. com/questions/3084387/how-can-i-programmatically-check-parse-the-validity-of-a-tsql-statement) @CyberDude - Puede usar 'SET NOEXEC ON' pero creo que la mejor manera es escribir una utilidad para realmente tratar de ejecutarlos y deshacerlos. –
Supongo que podría crear una secuencia de comandos dinámica que enumera todos los procedimientos y trata de ejecutarlos. Una parte interesante sería simular todos los parámetros necesarios ... Otra forma sería recuperar el texto del procedimiento e intentar hacer un 'ALTER PROCEDURE' pero sin cambiar nada dentro. – CyberDude
El análisis es un primer paso útil, y podría analizar procedimientos almacenados revisados para validar su sintaxis. Pero cargarlos en el DB hará eso, así que esto no es una gran ganancia. Verificar que funcionen por algún método regular parece mucho más útil. La respuesta de "pruebas unitarias" proporcionada por OMG Ponies es bastante buena. –