MSDE2000 や SQLServer 2000 のデータベースサーバーを動作させるためには、データベースサーバーのプログラム一式だけあれば動くという単純な仕組みではないのが、アンインストールの複雑な原因です。
プログラムの他に、システムデータベース(master,msdb,model)が必要です。
すなわち、データベースサーバーは、
プログラム+システムデータベース
の組み合わせから出来上がっています。
サービスパックのインストールとは、プログラムを修正するだけではなく、システムデータベースの内容も修正します。このシステムデータベースが以前のものと互換性がなくなるという点に注意してください。組み込まれているプログラムのバージョンとシステムデータベースのバージョンが一致して、始めてデータベースサーバーが稼働します。
このため、プログラムとシステムデータベースのバージョンに不一致があると、誤動作の原因になります。
さらに厄介なことに、システムデータベースの内容は、日々刻々と、格納されたレコードのデータが変化するという点があります(そんなに毎日刻々と変化しないシステムデータベースの運用状態もありますが、時間とともに変化すると考えて下さい)。
サービスパックをインストールした後に、インストール前のバージョンに戻すためには、データベースのプログラムとシステムデータベースの組み合わせを、前のバージョンに戻す操作をしなければいけません。プログラムを前のバージョンに戻すことは、難しいことではありません(サービスパックのインストール時に保存すればよい)。ところがシステムデータベースの場合はどうでしょうか?
サービスパックをインストールする直前のシステムデータベースは自動的に保存しようと思えばできます(但し、今のサービスパックのインスト−ラーは、システムデータベースのバックアップはユーザの行為に任せていますので注意して下さい。サービスパックをインストールする前に、システムデータベースのバックアップを必ず実行して下さい)。ところがシステムデータベースは日々変化するものです。ですからサービスパックをインストールして、しばらく運用を行なって、そのサービスパックをアンインストールする場合、運用中にシステムデータベースに書かれた内容(例えば新しいログインユーザの追加など)は、サービスパックをインストールする直前にバックアップしたシステムデータベースには存在しない内容です。このため、サービスパックをアンインストールして1つ前のシステムデータベースのバージョンに戻すと、これらの情報が消えた状態になっています。
このような理由から、サービスパックをインストールして、何か不具合が出たので前のバージョンに戻すことは、システムデータの損失が起きる可能性があります。
ですからサービスパックのインストールは、インストールをする前に、予備機を準備して、予備機上で十分に検査を行い、問題が無いことを確認してから、本番運用機にインストールをしなければいけません。 事前準備もせずに、本番運用機に直接サービスパックをインストールする行為は、大変に危険だと言わざる終えません。
もちろん、データベースサーバーで稼働しているデータベースがあまり重要でなければ、直接サービスパックをインストールしても良いでしょう。
なおユーザデータベースは、サービスパックに関係なく互換性があります。ですからサービスパックをインストールして、新しいログインを登録して(システムデータベースにログインレコードが追加される)、そのログインに対応するデータベースユーザを作成して、そのユーザがデータベースの中で何か操作を行なった後で、サービスパックをアンインストールすると、そのユーザに対応するログイン情報は消えているので、困ることになります。
|