マイクロソフトでは、Microsoft SQL Server 2008 SP2 の修正を 1 つのダウンロード可能なファイルとして配布しています。 修正は累積的であるため、新しいリリースの修正には、以前のリリースの SQL Server 2008 SP2 修正に含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。
現象
たとえば次のようなシナリオを考えてみます。
次のいずれかを行います
- Microsoft SQL Server 2008 Service Pack 2 (SP2) の累積的な更新プログラム 2 またはそれ以降のバージョンの累積的な更新プログラム パッケージをインストールする
- SQL Server 2008 から SQL Server 2008 Service Pack 3 (SP3) へのアップグレード
- SQL Server 2008 R2 を SQL Server 2008 R2 Service Pack 1 (SP1) またはそれ以降のバージョンの Service Pack にアップグレードする
ユーザー データベース上で SQL Server エージェント ジョブを作成し、スケジュールの種類を [SQL Server エージェントの起動時に自動的に開始する] に設定します。
SQL Server サービスを再起動します。
このシナリオでは、SQL Server エージェント ジョブは失敗します。
原因
この問題は、ジョブの開始時にユーザー データベースのリカバリが完了していないために発生します。 SQL Server 2008 SP2 の累積的な更新プログラム 2 をインストールした後、SQL Server 2008 を SQL Server 2008 SP3 にアップグレードした場合、または SQL Server 2008 R2 を SQL Server 2008 R2 SP1 にアップグレードした後、MSDB データベースの回復が終了した直後に SQL Server エージェント が起動します。
注: SQL Server エージェントは、すべてのデータベースが回復した後に起動する必要があります。
解決策
SQL Server 2008 R2 Service Pack 1
この問題の修正プログラムは、累積的な更新プログラム 9 で最初にリリースされました。 SQL Server 2008 R2 Service Pack 1 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。
2756574 SQL Server 2008 R2 Service Pack 1 の累積的な更新プログラム パッケージ 9 注: ビルドは累積的であるため、新しくリリースされた修正プログラムには、以前の SQL Server 2008 R2 Service Pack 1 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2567616 SQL Server 2008 R2 Service Pack 1 以降にリリースされた SQL Server 2008 R2 のビルド
SQL Server 2008 Service Pack 3
この問題の修正プログラムは、SQL Server 2008 Service Pack 3 の累積的な更新プログラム 7 で最初にリリースされました。 この累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。
2738350 SQL Server 2008 Service Pack 3 の累積的な更新プログラム パッケージ 7 注: ビルドは累積的であるため、新しくリリースされた各修正プログラムには、以前の SQL Server 2008 Service Pack 3 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2629969 SQL Server 2008 Service Pack 3 以降にリリースされた SQL Server 2008 ビルド
SQL Server 2008 Service Pack 2 の累積的な更新プログラム 8
この問題の修正プログラムは、SQL Server 2008 Service Pack 2 の累積的な更新プログラム 8 で最初にリリースされました。 SQL Server 2008 Service Pack 2 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。
2648096 SQL Server 2008 Service Pack 2 の累積的な更新プログラム パッケージ 8 注: ビルドは累積的であるため、新しくリリースされた修正プログラムには、以前のリリースの SQL Server 2008 Service Pack 2 修正プログラムに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2402659 SQL Server 2008 Service Pack 2 以降にリリースされた SQL Server 2008 ビルド
SQL Server 2008 R2 Service Pack 2
この問題の修正プログラムは、SQL Server 2008 R2 Service Pack 2 の累積的な更新プログラム 2 で最初にリリースされました。 この累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。
2740411 SQL Server 2008 R2 Service Pack 2 の累積的な更新プログラム パッケージ 2 注: ビルドは累積的であるため、新しくリリースされた修正プログラムには、以前の SQL Server 2008 R2 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2730301 SQL Server 2008 R2 Service Pack 2 以降にリリースされた SQL Server 2008 R2 ビルド
レジストリ キー情報
重要: このセクション、メソッド、またはタスクには、レジストリの変更方法が記載されています。 ただし、レジストリを誤って変更すると、深刻な問題が発生する可能性があります。 そのため、この手順は必ず慎重に行ってください。 さらなる保護のため、レジストリは変更する前にバックアップしてください。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリのバックアップ方法および復元方法の詳細を参照するには、以下のサポート技術情報番号をクリックしてください。
322756 Windows でレジストリをバックアップおよび復元する方法この修正プログラムを適用した後、まず影響を受けるインスタンスの SQL Server エージェント サービスを再起動する必要があります。 サービスの再開時に、新しい RecoveredDatabasesForAgentStartup レジストリ キーが作成されます。 このレジストリ キーは、SQL Server エージェント ジョブを開始する前に、SQL Server エージェントがユーザー データベースの回復の完了を待機するかどうかを定義します。
このレジストリ キーを自動的に設定するには、「Fix it で解決する」セクションに進んでください。 このレジストリ キーを自分で構成する場合は、「自分で解決する」セクションに進んでください。
Fix it で問題を解決する
このレジストリ キーを自動的に構成するには、[ この問題を解決する] ボタンまたはリンクをクリックします。 次に、[ファイルのダウンロード] ダイアログ ボックスで [実行] をクリックし、Fix it ウィザードの手順に従います。
メモ
- この Fix it ソリューションを実行する前に、マイクロソフト サポート技術情報 (KB) の記事 2648096 に記載されている修正プログラムをインストールする必要があります。 次に、影響を受けるインスタンスの SQL Server エージェント サービスを再起動する必要があります。
- このウィザードは英語版のみである場合があります。 しかし、自動的な解決は英語版以外の Windows でも機能します。
- 問題のあるコンピューターとは別のコンピューターを操作している場合、Fix it ソリューションをフラッシュ ドライブまたは CD に保存することで、問題のあるコンピューターで実行することができます。
次に、「問題が解決されたかどうかの確認」セクションに進んでください。
自分で解決する
RecoveredDatabasesForAgentStartup レジストリ キーを構成するには、次の手順に従います。
[スタート]、[ファイル名を指定して実行] の順にクリックし、[名前] ボックスに「regedit」と入力し、[OK] をクリックします。
次のレジストリ サブキーを見つけてクリックします。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.instance\SQLServerAgent\詳細ウィンドウで、[RecoveredDatabasesForAgentStartup] を右クリックし、[変更] をクリックします。
[値のデータ ] ボックスに「ALL」と入力します。
注: RecoveredDatabasesForAgentStartup レジストリ エントリの既定値は MSDB です。
レジストリ エディターを終了します。
注: RecoveredDatabasesForAgentStartup レジストリ エントリの値を MSDB または ALL 以外の値に設定すると、警告メッセージが SQL Server エージェント ログに記録され、SQL Server エージェントは MSDB データベースのみを待機します。
問題が解決されたかどうかの確認
- 問題が解決されたかどうかを確認します。 問題が解決された場合、このセクションの作業は完了していることになります。 問題が解決されていない場合は、サポートに問い合わせることができます。
- マイクロソフトではフィードバックをお待ちしております。 この解決方法に関するフィードバックを提供するか、または問題を報告するには、「Fix it for me」ブログ (英語) にコメントを記入するか、電子メール メッセージ (日本語可) を送信してください。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。
回避策
この問題を回避するには、対象のデータベースがオンラインであるかどうかを確認する手順を SQL Server エージェント ジョブに追加します。 この手順は最初の手順です。
注: データベースの状態は、sys.databases システム テーブルの列の状態を照会することでチェックできます。