none
システムのVerup時にシステム停止する方法について教えてください RRS feed

  • 質問

  • お世話になります。

     

    WEBシステムを「ASP+SQL Server2000/2005」で構築しています。
    システムに変更があった場合、プログラムの入れ替えや、DBのテーブルを追加/変更しますが、
    そのとき、ユーザーサイドで使用中だと困るので、その対応をどうするかで悩んでいます。

     

    方法はいろいろあると思いますが、
    考えられる案で、良い点/欠点などをまとめ、一番いい方法を選びたいと思います。
    それを皆様に、アドバイスいただければと思います。

    まず、自分で、考えた案を記載しますので、いろいろご助言ください。

     

    <案>
    1.一番簡単な方法として、システムの入れ替え時には、ユーザーに使用しないよう依頼する。
     欠点は、依頼するのが漏れていたり、忘れられたりした場合、機能の変更内容によりますが、DBの更新でおかしくなる可能性がある。

     

    2.サービスを停止する。
     IISのサービスを停止(net stop iisadmin /y)、又は、SQL Serverのサービスを停止(net stop MSSQLServer)する。
     欠点は、他のシステムも使用できなくなる。

    →お聞きしたいのですが、IISのサービスで、一部のシステム(仮想フォルダ単位)を停止する方法はないでしょうか?
     もしくは、SQL Serverのサービスで、一部のシステム(DB単位)を停止する方法はないでしょうか?

     

    3.SQL Serverのログインするユーザーの権限を剥奪する
     通常のユーザーの場合は、SELECT/UPDATE/INSERT/DELETE権限を剥奪する。
     ちなみに、今回の場合、ユーザーを作成するときに、サーバーロールが"sysadmin"だったので、下記を実行
     exec sp_dropsrvrolemember 'ユーザー名' ,'sysadmin'

     

    4.ロック用テーブルを使用する。
     SQL Serverにロック用テーブルを新設し、システム変更を行うときは、手動で、その中のロック用フィールドを"ON"にする。
     システムでは、各テーブルを使用する都度、そのロック用テーブルを参照し、ロック用フィールドが"OFF"のときのみ、処理を続行する。
     "ON"のときは、画面に使用不可のメッセージを表示して、終了する。
     欠点は、プログラムが複雑(プログラムを作る都度、その仕組みを組み込まないといけない)になる。
     他システムからの参照機能があり、その場合、どうするかで問題(参照しかしないことになっているので、その場合だと問題ない?かもしれない)
     また、プログラム側で漏れがあると、使用不可なのに、データを更新してしまい、おかしくなる可能性がある。

     

    これ以外でも、実際このようにしています。や、このような方法もあります。
    などがありましたら、是非教えてください。

     

    よろしくお願いいたします。

    2007年6月8日 9:02

すべての返信