Modifiqué una tabla central en mi base de datos, y sp_depends literalmente devuelve cientos de resultados, y me preocupa que algunos de esos procedimientos almacenados ya no puedan compilarse después de mi cambio.
Verificar un solo procedimiento almacenado es fácil (solo vuelvo a ejecutar el script alter y veo si la operación es exitosa), pero hacerlo en más de 100 procedimientos es un poco engorroso.
Sé que puedo usar un script como este para recompilar todos los objetos de mi base de datos, pero la operación real tendrá lugar la próxima vez que se ejecute el procedimiento almacenado, no de inmediato, por lo que no parece apropiado en mi caso.
También estaba pensando que podría eliminar todos los procedimientos almacenados por completo y resincronizar mi base de datos con mi sistema de control de código fuente, pero esa opción, aunque viable, no es muy elegante. ¿Hay una mejor manera de hacer esto?
Estoy usando SQLServer 2008 R2 y mis scripts de base de datos se almacenan en un proyecto de base de datos VS 2008.
Para aclarar, no estoy recomendando que uno deba confiar únicamente en este enfoque para probar el código. Al igual que en C #, detecta instantáneamente un error de sintaxis en otros archivos dependientes a medida que codifica (y luego usa otras estrategias para probar, como pruebas unitarias, que generalmente son varios órdenes de magnitud más lentas), creo que tendría sentido detectar dependencias SQL errores en segundos en lugar de tener que ejecutar una prueba funcional completa que generalmente puede tardar algunas horas en completarse.
Es una solución, pero podría generar los scripts CREATE PROCEDURE para la base de datos (haga clic con el botón derecho en la base de datos -> tareas -> generar scripts), busque y reemplace CREATE PROCEDURE con ALTER PROCEDURE y luego analice.
Espero que obtengas una mejor respuesta aquí. ¡También estoy interesado! :)
fuente
Puede usar las Herramientas de datos del servidor SQL (SSDT). Microsoft Visual Studio le permite crear un proyecto de servidor SQL. Luego se importa la base de datos al proyecto y luego se construye el proyecto. Si hay procedimientos u objetos almacenados dañados, obtendrá un error de compilación.
fuente
Es posible que desee ver esta pregunta SO . Estoy buscando una forma confiable de verificar los procedimientos almacenados de T-SQL. ¿Alguien tiene uno? que pregunta esencialmente lo mismo, con varias respuestas.
Para construir sobre el script que Alaa Awad publicó ... esto debería mostrar el esquema y la base de datos de los objetos referenciados y de referencia. Si está usando muchas tablas temporales a través de alias (que a veces aparecen cuando se usa
sys.sql_expression_dependencies
), parámetros UDTT u otras características dinámicas, es posible que necesite usar las funcionessys.dm_sql_referenced_entities
o en susys.dm_sql_referencing_entities
lugar / también.fuente
use las dependencias sys.sql_expression_dependencies agregadas en sql server 2008
fuente