La base de datos en nuestro entorno está siendo compartida por 2 entornos/aplicaciones diferentes. De las 2 aplicaciones, las primeras dicen que A se actualiza con frecuencia, mientras que la segunda aplicación B no se actualiza con tanta frecuencia.¿Cómo se manejan los cambios en el código de procedimiento almacenado de múltiples aplicaciones usando la misma base de datos?
Así que aquí la situación es cuando la aplicación A se actualiza con código nuevo, principalmente procedimientos almacenados, a veces puede afectar y romper la segunda aplicación B, que está siendo actualizada por otro equipo y no se actualiza con demasiada frecuencia. Entiendo que esta no debería ser la manera correcta de manejarlo y que no actualizar ambos entornos juntos puede ser desastroso. Esto está sucediendo porque las aplicaciones A & B están siendo manejadas por diferentes equipos.
¿Cómo manejarías esta situación elegantemente?
De Aplicación B las precauciones que pude tomar son - Recuperación de datos en código - La mejor manera al recuperar datos sería para comprobar si hay columnas en blanco/nulo, por lo que si las nuevas columnas se agregan mediante la aplicación A, que pueden ser ignorado por la aplicación B. Recuperar datos en SQL - Dentro del procedimiento, se puede manejar usando parámetros opcionales.
Pero cuando el código C# llama a un procedimiento, se supone que estamos pasando valores de param, y si hay nuevos parámetros agregados, se rompe. ¿Hay alguna manera de asegurarse de que si falta el parámetro de llamada, debe ignorarse (desde C# o SQL Server)?
Mis programas de investigación -
que puedo recuperar la lista de parámetros del procedimiento almacenado en primer lugar, y luego llamar al procedimiento utilizando esa lista para recorrer y comprobar si existe el parámetro. Para que incluso si la aplicación A agrega nuevos parámetros, la aplicación B pueda manejarla automáticamente. Esto podría hacerse usando DeriveParameters en C# o una consulta SQL para obtener la lista de parámetros.
Cambie todos los SPROC para tomar los parámetros en forma de CSV. Y divídalos en el SPROC y úselos en consecuencia. Esto suena cojo para cientos de sprocs existentes.
Una vez más, como ya he dicho - esto es imposible parece una buena solución, y si has tenido una situación similar, lo diferente que habría manejado esto? ¿Existe un marco, que no sé cuál podría funcionar en este escenario?
Medio Ambiente - ASP.NET/C# 4.0, SQL Server 2008 R2
EDITAR - Permítame rehacer y proporcionar un poco más detalles aquí.
Aplicación/Equipo A cambia el código, pero sólo C# código se extenderá a la producción, sin embargo, no los cambios de base de datos. Aquí es donde está la diferencia. Y el código DB entraría solo con la próxima versión.
La aplicación/Equipo B tiene el código más reciente, pero los cambios en la base de datos todavía no están en producción y aún utiliza la base de datos anterior.
De acuerdo con las 3 respuestas publicadas hasta ahora, dado que el problema es la base de datos compartida, la mejor solución es hacerla en la base de datos, no en las aplicaciones que la usan. –
¿Finalmente llegó a un acuerdo sobre qué hacer con el otro equipo? –