私は大きなeshopのためのwotkingデータベース開発チームの一部です。私たちはMS SQL 2016とASP.NETを使用しています。 SQL Serverは、プロダクション環境で接続プーリング(aprox 7-10kバッチ/秒)を使用する10以上のIISサーバーからのクライアントによって使用され、18個のDEV/TESTING IISサーバーを使用しています(マルチTBサイズなので1つのDEVデータベースのみ)。 既存のストアドプロシージャを頻繁に変更する新しい機能を開発しました。どのように効果的なバージョンストア手順ですか?
本番環境に変更を展開する場合は、アプリケーションの変更とデータベースプロシージャの変更の両方を変更する作業の一部です。展開するときは、常に5つのIISサーバーに変更され、次に5つのIISサーバーに変更されます。その間、古いバージョンと新しいバージョンの両方がIISサーバー上に存在します。これらのバージョンは、データベース内のプロシージャを同時に使用している間、しばらく共存する必要があります。データベースレベルでは、プロシージャのいくつかのバージョンを使用してこの状況を解決します。古いバージョンのアプリケーションはEXEC dbo.GetProductを呼び出し、新しいアプリケーションバージョンはdbo.GetProduct_v2を使用します。新しいバージョンのアプリケーションをすべてのIISに配備すると、誰もがdbo.GetProduct_v2を使用しています。次回の展開では状況が逆転し、dbo.GetProductに新しいバージョンが含まれます。同様の状況が開発環境とテスト環境にあります。
私はこのソリューションが理想的ではなく、私はインスピレーションを受けたいと思います。
データ部分と論理部分を分けることを検討します。あるデータベースにはデータテーブルがあり、他のデータベースにはプロシージャやその他のプログラムオブジェクトのみが含まれます。新しいバージョンをデプロイするときは、ロジックを含むデータベース全体の新しいバージョンをデプロイするだけで、プロシージャのバージョンを作成する必要はありません。ロジックデータベースからのプロシージャは、データベースをデータでクエリします。 しかし、このソリューションの欠点は、他のデータベースでのクエリをサポートしていないため、来年使用する予定のネイティブなコンパイル済みプロシージャを使用できないことです。別のオプションは、1つのデータベースと異なるスキーマで別の手順のバージョンを使用している
...あなたが任意のアイデア、長所/短所を持っているか、あなたが私たちを支援し、管理することができますどのようなツールを知っていれば
は/展開/は、複数のprocバージョンを使用しますコメントしてください。私たちは、TFSやGitのを使用しているが、これはSQLデータベース内のプロシージャのバージョン管理を解決するものではない:
は編集どうもありがとうございます。私の主な質問は、データベース内の複数のバージョンのプロシージャを使用して複数バージョンのIISアプリケーションを管理する必要性に対処する方法です。
GITのようなソースリポジトリを調べましたか?他にも複数の選択肢がありますが、本当に投資したいものがあります。https://git-scm.com/ –
誰かが質問をしたときに私を楽しませますが、その投稿はその質問に関する間違った情報を記載しています。 TFS/Gitは、適切なプロジェクトやツールを使用すれば、バージョン管理の問題を確実に解決できます。スキーマ比較を参照してください。 –
あなたの究極の目標は何ですか? IISコードでSP参照を変更する必要はありませんか?そして、DBのSPバージョン管理だけを管理することができますか? – thomas