0

フェデレーション データベースを備えたサーバー ファームにデプロイされた SQL サーバーを備えた asp.net Web アプリケーションがあります。ストアド プロシージャ (準備済みの sql ステートメントとは対照的に) と inproc セッションを使用します。高可用性を実現する一環として (少なくとも、制御された一連の変更を含むサービス パックの場合)、ファームでローリング展開を使用する予定です。つまり、次のようにします。

  1. サーバーのグループをシャットダウンします
  2. これらのサーバーにアプリケーションをデプロイします
  3. これらのサーバーを立ち上げる
  4. 別のグループをシャットダウンします。すべてのグループに対して 1 ~ 3 を繰り返します。

これは、一部のユーザーがキックオフされることを意味しますが、アプリケーションは引き続き利用可能であり、メンテナンス ページを作成する必要はありません。

簡単なのは Web アプリケーションをデプロイすることですが、難しいのは、ストアド プロシージャに変更があった場合 (たとえば、新しいパラメーターが追加された場合) です。両方のバージョンのストアド プロシージャが必要になる時点があります (既存のものと展開されている新しいもの)。

ストアド プロシージャの 4 つのオプションを検討しました。

  1. リリースにストアド プロシージャの変更がある場合は、ローリング展開を使用しないでください
  2. ローリング展開がリリースで使用されている場合、コードの重複を意味する場合でも、新しいストアド プロシージャのみが許可されます。
  3. アプリ層にストアド プロシージャのバージョン管理といくつかのフレームワーク コンポーネントを導入して、呼び出される sproc にバージョン番号を自動的に追加します。
  4. 既存のストアド プロシージャを上書きし、一部のストアド プロシージャの呼び出しが失敗するようにします。

すべてのアプローチには長所と短所があり、これらのうち 3) が最も実行可能ですが、最も複雑でもあります。どちらをお勧めしますか?このシナリオを処理するための SQL Server のトリックはありますか? 他のアプローチはありますか?

4

1 に答える 1

0

データベースへのあらゆる種類の変更をカバーしたい場合は、データベース ミラーリングとローリング アップグレードを検討することをお勧めします。

リンクからの抜粋:

アップグレード中の本番データベースの可用性が向上します。

ミラーリングされたデータベースのダウンタイムを最小限に抑えるために、データベース ミラーリング セッションに参加している SQL Server のインスタンスを順次アップグレードできます。これにより、単一のフェールオーバーのみのダウンタイムが発生します。この形式のアップグレードは、ローリング アップグレードと呼ばれます。

于 2011-09-08T14:42:14.100 に答える