私たちの環境内のデータベースは、2つの異なる環境/アプリケーションによって共有されています。 2つのアプリケーションのうち、最初の1つはAが頻繁に更新され、2つ目のアプリケーションBは頻繁に更新されないと言います。同じデータベースを使用する複数のアプリケーションからのストアドプロシージャコードの変更を処理する方法は?
ここでは、アプリケーションAが主にストアドプロシージャの新しいコードで更新される場合があります。頻繁に更新されない別のチームによって更新されている2番目のアプリケーションBに影響を与えて破損することがあります。 私はこれを適切な方法ではなく、両方の環境を一緒に更新することは悲惨なことであることを理解します。 これは、アプリケーションA & Bが異なるチームによって処理されているために発生しています。
どのようにこの状況を優雅に処理しますか?アプリケーションBから
私が取ることができる予防策がある - コード内の データの取得 - 最良の方法は、データを取得するときに新しい列がアプリケーションAによって追加された場合、彼らができるように、空白/ NULL列をチェックすることですアプリケーションBでは無視されます。 SQLでのデータの取得 - プロシージャ内では、オプションのパラメータを使用して処理できます。
しかし、C#コードがプロシージャを呼び出すときには、パラメータ値を渡すことになっています。新しいパラメータが追加された場合は、それが破損します。 呼び出しパラメータが見つからない場合は、C#またはSQL Serverから無視する必要がありますか?
私の研究のショー - 私が最初SPROCからパラメータのリストを取得し、その後をループにそのリストを使用してプロシージャを呼び出し、paramは存在するかどうかを確認することができます
。 アプリケーションAが新しいパラメータを追加しても、アプリケーションBによって自動的に処理されることがあります。 これは、C#のDeriveParametersまたはSQLクエリを使用してパラメータリストを取得できます。
すべてのSPROCを変更して、CSVの形式でパラメータを取得します。それをSPROCで分割し、それに応じて使います。 これは何百もの既存のsprocsの色が変わってしまいます。私が言ったように
ここでも、 - これは良い解決策のように見えるdoesntのである、とあなたが似たような状況があった場合、どのように違ったあなたはそれを処理しているのでしょうか? フレームワークはありますか?このシナリオでどちらがうまくいくのか分かりません。
環境 - ASP.NET/C# 4.0、SQL Server 2008 R2の
EDITは - 私は言い換えると、ここでもう少し詳細を提供してみましょう。
アプリケーション/チームAはコードを変更しますが、DBは変更されずにC#コードのみが本番環境に展開されます。 これが相違点です。そして、DBコードは次のリリースでのみ使用されます。
アプリケーション/チームBには最新のコードがありますが、DBの変更はまだ行われておらず、古いデータベースが使用されています。
これまでに投稿された3つの回答によれば、問題は共有データベースであるため、解決策はデータベースを使用するアプリケーションではなくデータベースで行うのが最適です。 –
あなたは最終的に他のチームと何をするかについての合意を手配しましたか? –