
弊社のクライアントの 1 社には、CrystalTech がホストする Windows 2008 Hyper-V インスタンスがあり、子 VM が適切にシャットダウンされずに親 Hyper-V サーバーが再起動されることがあります。
その結果、サーバーがオンラインに戻ったときに、自動に設定されていても、VM 内の SQL Server Express サービスは起動しません。イベント ログにはエラー エントリはありません。サーバーを通常どおり再起動すると、SQL Server Express は正常に起動します。
この問題に遭遇した人はいますか? 解決するためのヒントはありますか?
ちなみに、サーバーが予期せずシャットダウンしたときに通知を電子メールで送信するための優れたスクリプトやメソッドを持っている人はいますか?
ちなみに、Hyper-V VM に適したホストをご存知の方はいらっしゃいますか?
答え1
とても奇妙です。何かおかしなことが起こっていると思います。TechNet または MSDN をお持ちの場合は、MS に訴えてこの問題を解決してください。環境またはデフォルトの Windows または SQL Server のインストールに何らかの異常があり、それが原因である可能性があります。
実行できる 1 つの方法は、上記のようにタスク スケジューラ項目を設定して起動することです。
失敗した場合にサービスを再起動するように設定した場合、それは機能しますか?
答え2
他のすべてのサービスは起動しますか?
起動すら試みていないことに驚いています。複数のインスタンスを確認しましたか? インスタンスが 1 つしかないと思っていても、実際には複数あり、間違ったインスタンスを確認している人がいるのを見たことがあります。
SQL Express が起動しない根本的な理由はありません。VM クラッシュは SQL にとってハード パワーオフのようなものであり、通常は自動的に再起動します。
サービスの依存関係も探すかもしれません。SQL Server が依存関係チェーンのルートにあると予想されますが、他の何かに依存している可能性もあります。
答え3
私も同じ問題を抱えていました。私の場合、クライアント コンピューターに SQL Server の接続情報を提供するサービス SQL Server Browser が、何らかの理由で無効に変更されていたことがわかりました。そのプロパティを自動に変更すると、すべてが正常に再開されました。
答え4
起動時に実行され、SQL が実行されているかどうかをチェックし、存在しない場合は起動するだけのアプリを構成するのはどうでしょうか。タスク スケジューラで定期的に実行するように構成することもできます。