次の方法で共有


Data Protection Manager でのスケジュールされたバックアップ ジョブエラーのトラブルシューティング

この記事では、Microsoft System Center Data Protection Manager (DPM) でスケジュールされたバックアップ ジョブのエラーをトラブルシューティングする方法について説明します。

元の製品バージョン: System Center Data Protection Manager
元の KB 番号: 4456295

DPM コンソールで、それぞれのデータ ソースの保護状態が緑色 (OK) として表示され続ける場合でも、復旧ポイント ジョブがスケジュールどおりに実行されない場合があります。 通常、この問題は、SQL Server エージェントが DPM エンジンを呼び出してスケジュールされたジョブを実行できない場合に発生します。

注:

この問題は、DPM コンソールから手動ジョブを実行するときにSQL Server エージェントが使用されないため、アドホック手動ジョブには影響しません。

スケジュールされたジョブ実行のしくみ

保護グループが設定されると、DPM は、各データ ソースのバックアップ ジョブ (増分同期、高速完全など) を、他のメンテナンス ジョブと共にSQL Serverに作成します。 と呼ばれる TriggerJob.exe コンポーネントは、データ ソースのジョブ定義 ID を渡してバックアップ ジョブの実行を開始することで、DPM エンジンを呼び出すために使用されます。 TriggerJob.exeは、スケジュールされた時刻に次のコマンド構文を使用して、SQL Server エージェント Scheduler によって実行されます。

triggerjob.exe <JobDefinitionID> <ScheduleID> <FQDN-DPMServer>

スケジュールされた時刻にジョブの実行を開始するために、スケジュール エージェント スケジューラによって実行される一般的なコマンドの例を次に示します。

C:\Program Files\Microsoft System Center 2012 R2\DPM\DPM\bin\TriggerJob.exe 1bd305ae-f158-4948-93f8-e935103b168f 1e53fd39-0339-4d41-96ec-89fdf587f1e5 <FQDN-DPMServer>

注:

このパスは、DPM のバージョンと、アップグレード (同じパス) または新しいインストール (異なるパス) によって異なる場合があります。

何らかの理由で、 コマンドが実行および呼び出 Triggerjob.exeされない場合、DPM エンジンは呼び出されません。 そのため、バックアップ ジョブは実行されません。 SQL Serverコマンドを実行していないため、DPM はこのエラーを認識せず、データ ソースの保護状態を緑色で表示し続けます。

次のセクションでは、スケジュールされたバックアップ ジョブエラーのトラブルシューティングを行う方法をいくつか示します。

アプリケーション ログを確認する

スケジュールされたバックアップ ジョブがSQL Serverによって呼び出されない場合、DPM では、SQL Server側でエラーが発生したため、それらのジョブの失敗に関するアラートは生成されません。 ただし、これらのイベントは、問題の原因に応じて、SQL Server、Windows エラー報告、または MSDPM イベントとしてアプリケーション ログにキャプチャされます。 スケジュールされたジョブの失敗に関連するSQL Serverからのイベントに対して、アプリケーション ログイン イベント ビューアーをチェックしていることを確認します。 DPM コンピューターで DPMDB のリモート SQL Serverを使用している場合は、リモート サーバーのアプリケーション ログを確認します。

たとえば、次のイベントがアプリケーション ログに表示され、コマンド ラインを実行しようとしたときにSQL Server エージェントに何らかの問題が発生することを示します。

ログ名: アプリケーション
ソース: SQLAgent$MSDPM2012
日付: <日付 & 時刻>
イベント ID: 208
タスク カテゴリ: ジョブ エンジン
レベル: 警告
キーワード: クラシック
ユーザー: N/A
コンピューター: <DPMServerName>
説明:
SQL Serverスケジュールされたジョブ '00890b12-9058-4f42-8143-291dc3de4d78' (0xC52C50485ED1754EB12D16117B258DD7) - 状態: Failed - Invoked on: <日付 & 時刻>- メッセージ: ジョブが失敗しました。 ジョブは User <UserName> によって呼び出されました。 最後に実行する手順は、手順 1 (既定の JobStep) でした。

Windows エラー報告のサンプル イベントを次に示します。

障害バケット 、0 と入力します
イベント名: DPMException
応答: 使用できません
Cab Id: 0

問題の署名:
P1: TriggerJob
P2: 3.0.7696.0
P3: TriggerJob.exe
P4: 3.0.7696.0
P5: System.UnauthorizedAccessException
P6: System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal
P7: 20B9A72D
P8:
P9:
P10:

DPM エンジンからの別のサンプル イベント:

ログ名: アプリケーション
ソース: MSDPM
日付: <日付 & 時刻>
イベント ID: 976
タスク カテゴリ: なし
レベル: エラー
キーワード: クラシック
ユーザー: N/A
コンピューター: <DPMServerName の FQDN>
説明:
ソース MSDPM からのイベント ID 976 の説明が見つかりません。 このイベントを発生させるコンポーネントがローカル コンピューターにインストールされていないか、インストールが壊れています。 ローカル コンピューターにコンポーネントをインストールするか、コンポーネントを修復してください。
DPM ジョブが DPM エンジンに接続できなかったため、失敗しました。

問題の詳細:
<JobTriggerFailed__System ID 9/ID><Seq>0</Seq><TimeCreated><Date & Time></TimeCreated><Source>TriggerJob.cs</Source><Line>76</Line><HasError>True</HasError></__System><Tags><JobSchedule /></Tags></JobTriggerFailed<>><><>

SQL Server Management Studioからジョブを手動で実行する

SQL Management Studio からジョブを手動で実行してみてください。 これを行うには、次の手順を実行します。

  1. SQL Server Management Studioを開始し、DPMDB データベースに使用されるSQL Server インスタンスに接続します。 [SQL Server エージェント>ジョブ] を展開します。 [ ジョブ ] の一覧の GUID 値は、各ジョブの スケジュール ID を 提供します。 ジョブを右クリックし、コンテキスト メニュー の [ステップ] で [ジョブの開始 ] を選択します。

    [ジョブ] の下に表示されているジョブを右クリックし、[ステップでジョブを開始] オプションを選択します。

  2. ジョブが実行されない場合は、次のようなエラー メッセージが表示されます。

    ジョブ '00890b12-9058-4f42-8143-291dc3de4d78' の実行に失敗しました。

    ジョブが実行されない場合に発生する実行エラー。

  3. このメッセージは、アクセス許可が正しくないなどの理由で、SQL Server エージェントがジョブを実行できなかったことを確認します。 この問題のトラブルシューティングについては、「 ログオン アカウントの資格情報を確認 する」セクションを参照してください。

コマンド プロンプトでジョブを手動で実行する

コマンド ラインでを実行して、コマンドが実行Triggerjob.exeされ、バックアップ ジョブが DPM で正常に開始されるかどうかを手動でチェックできます。 これを行うには、次の手順を実行します。

  1. SQL Server Management Studioを開始し、DPMDB データベースに使用されるSQL Server インスタンスに接続します。 [SQL Server エージェント>ジョブ] を展開します。 いずれかのジョブを右クリックし、[プロパティ] を選択 します

    いずれかのジョブを右クリックし、[プロパティ] を選択します。

  2. [ プロパティ ] ダイアログ ボックスで、左側の [ステップ ] を選択し、下部にある [編集 ] ボタンを選択します。

    [ジョブのプロパティ] ダイアログ ボックスでジョブのプロパティを編集します。

  3. [ ジョブ ステップのプロパティ ] ダイアログ ボックスで、次のスクリーンショットに示すように、コマンド プロンプト ウィンドウからコマンドをコピーします。

    [ジョブ ステップのプロパティ] ダイアログ ボックスで、[コマンド プロンプト] ウィンドウからコマンドをコピーします。

  4. 必要に応じて、コピーしたコマンドを実行します。

    • DPM サーバー (SQL Server のローカル インスタンスを実行している) の管理者特権のコマンド プロンプトで、次のコマンド例を実行します。

      C:\Program Files\Microsoft System Center 2012 R2\DPM\DPM\bin\TriggerJob.exe F60C8734-2DF5-4E86-8C7D-43558BD5A071 2F481ACB-2C3D-4F48-8C70-CA989C3E8FF2 <FQDN of DPMServer>
      

      コマンドが正常に実行された場合、問題は間違ったアクセス許可またはログオン資格情報に関連している可能性があります。 この問題 のトラブルシューティングについては、「ログオン アカウントの資格情報を確認 する」セクションを参照してください。

    • リモート SQL サーバーの管理者特権のコマンド プロンプトで、次のコマンド例 (該当する場合) を実行します。

      C:\Program Files\Microsoft Data Protection Manager\DPM2012R2\SQLPrep\TriggerJob.exe F60C8734-2DF5-4E86-8C7D-43558BD5A071 2F481ACB-2C3D-4F48-8C70-CA989C3E8FF2 <FQDN of DPMServer>
      

      リモート SQL Serverシナリオでは、コマンドが DPM サーバーで正常に完了したが、リモート SQL Serverで失敗した場合は、リモート SQL Serverにトラブルシューティングの取り組みを集中して、アクセス許可、ネットワーク、ファイアウォールの問題を除外します。

      注:

      SQL Serverのジョブのスケジュール ID の一覧を見ると、スケジュール ID と関連付けられているデータ ソースのマッピングを見つけることが困難な場合があります。 次の SQL クエリを実行して、わかりやすい情報を含むジョブの詳細を確認できます。

      use DPMDB –Change to actual name of DPMDB if it is different
      
      select
      
      sche.ScheduleId as 'SQL agent Schedule Job Name',
      
      sche.JobDefinitionId,
      
      prot.FriendlyName as 'Protection Group', am.ServerName as 'Servername or NULL',
      
      case
      
      when jobd.type = 'C9B259D2-6402-486D-8E36-C6C1ADAE0912' then 'Maintenance job that runs @ midnight'
      
      when jobd.Type = '3D859D8C-D0BB-4142-8696-C0D215203E0D' then 'Synchronization (file/volume) / Express Full (application)'
      
      when jobd.Type = '84021B5E-B4DC-9B27-2B7E-3B99BB1225FF' then 'Volume/Share/System State Recovery Point'
      
      when jobd.Type = '913afd2d-ed74-47bd-b7ea-d42055e5c2f1' then 'Backup to tape (D-T)'
      
      when jobd.Type = 'B5A3D25C-8EB2-4032-9428-C852DA5CE2C5' then 'Backup to tape (D-D-T)'
      
      when jobd.Type = 'C4CAE2F7-F068-4A37-914E-9F02991868DA' then 'Consistency Check'
      
      when jobd.Type = '5ECC82D0-3475-4E81-8ADD-55B1C1D23DB1' then 'SharePoint catalog generation'
      
      when jobd.Type = '6E7C76F4-A832-4418-A772-8E58FD7466CB' then 'Azure Online backup'
      
      end
      
      as Operation
      
      from tbl_SCH_ScheduleDefinition sche
      
      left join dbo.tbl_JM_JobDefinition jobd
      
      join tbl_IM_ProtectedGroup prot
      
      on jobd.ProtectedGroupId = prot.ProtectedGroupId
      
      on sche.JobDefinitionId = jobd.JobDefinitionId
      
      left join dbo.tbl_AM_Server AM
      
      on AM.ServerId = jobd.serverid
      
      where sche.IsDeleted = '0' and jobd.ProtectedGroupId is not null
      
      order by prot.FriendlyName
      

      SQL クエリの出力は、次の例のようになります。 この出力に基づいて、テスト用の小規模で迅速なデータ ソースのスケジュール ID を選択できます。

      データ ソースのスケジュール ID を含む SQL クエリの出力。

ジョブSQL Server無効になっているかどうかを確認する

スケジュールされたジョブは、SQL Serverで無効になる場合があります。 ジョブをチェックして有効にするには、次の手順に従います。

  1. SQL Server Management Studioで、DPM のSQL Server インスタンスに接続し、前のセクションで説明した SQL クエリを実行して、スケジュールされたジョブの一覧を見つけます。

  2. [SQL Server エージェント>ジョブ] を展開します。 そこに一覧表示されているジョブと、手順 1 で実行した SQL クエリからの出力を比較します。 クエリのジョブが [無効] (下矢印) として表示されている場合は、ジョブを右クリックし、[有効] を選択し、「コマンド プロンプトでジョブを手動で実行する」セクションに記載されている手順に従って、SQL Serverからジョブを手動で実行します。

    [SQL Server エージェント] でSQL Server ジョブを有効にします。

ログオン アカウントの資格情報を確認する

DPM は、SQL Server エージェント アカウント名をレジストリに入力します。 その後、そのアカウントが開始されるたびに確認されます。 DPM への内部インターフェイスは、このアカウントを使用してセキュリティ保護されるため、アカウント名は、SQL Server エージェントが使用するアカウント名と一致する必要があります。

注:

DPMDB をホストするSQL Server インスタンスのSQL Server エージェントおよびSQL Server サービスによって使用されるアカウントは、ローカル アカウント (MICROSOFT$DPM$AcctNTAuthority\System など) である必要があります。 これらのサービスがドメイン サービス アカウントで実行されるように構成されている場合は、ドメイン アカウントを使用するように構成された理由に関する特定の理由があるかどうかをチェックします。 SQL Server サービスのドメイン アカウントを必要とするシナリオには、次のようなものがあります。

  • リモート SQL Server: DPM は、リモート SQL Server インスタンスを使用して DPMDB データベースをホストするように構成されています。
  • ライブラリ共有が有効になっている: ライブラリ共有が有効になっているかどうかを確認します。 そうでない場合は、両方の場所 (SQL Server サービスと、次の手順の手順 2 で説明されているレジストリ キー) にあるローカル アカウントにアカウントを変更します。 または、状況に応じて、SQL Server サービスで使用されるドメイン アカウントと一致するようにレジストリ キーの値を変更します。

アカウント情報を確認し、必要に応じて変更を行うには、次の手順に従います。

  1. DPM のSQL Server インスタンスの次のサービス用に構成されているログオン アカウントを確認します。

    • SQL Server (InstanceName)
    • SQL Server エージェント (InstanceName)
  2. 次のレジストリ サブキーの値を確認して、値が異なっていることを確認します。 SQL Server エージェント サービスに使用されるユーザー アカウントを反映するように値を更新します。

    HKLM\Software\Microsoft\Microsoft Data Protection Manager\Setup

    • SqlAgentAccountName
    • SchedulerJobOwnerName

    注:

    レジストリ内のSQL Server アカウントを確認する手順については、「System Center 2012 R2 Data Protection Manager のインストールが失敗し、ID: 4323: "メンバーを追加できませんでした"」 を生成する方法に関するページを参照してください。

  3. レジストリのアカウント情報を変更した後、SQL Server エージェントとSQL Server サービスを再起動します。

  4. DPM サーバーで保護グループを選択し、リボンの [変更 ] を選択し、変更を加えずに保護グループを完了して更新します。

    注:

    この手順は、更新されたアカウント情報を使用してSQL Serverのジョブを再生成するために必要です。

  5. Microsoft$DPM$Acct サービス アカウント以外のアカウントを使用している場合は、DDCOM の起動とアクセス許可を、Microsoft$DPM$Acct に付与されたものと一致するように更新します。 これを行うには、次の手順を実行します。

    1. コマンド プロンプトで DCOMCNFG.exe を開始し、[コンポーネント サービス>コンピューター][マイ コンピューター>>] [DCOM Config>Microsoft System Center Data Protection Manager 2010 Service] の順に移動します。

    2. サービス名を右クリックし、[プロパティ] を選択 します

    3. [セキュリティ] タブを選択し、[起動とアクティブ化のアクセス許可] 領域で [編集] を選択します。

    4. 新しいアカウントを追加し、それに対するすべてのアクセス許可を付与します。

  6. 必要に応じて、次のフォルダー (Triggerjob.exe が配置されている) のアクセス許可を確認します。

    • DPM サーバー: C:\Program Files\Microsoft System Center 2012 R2\DPM\DPM\bin

    • リモート SQL Server:C:\Program Files\Microsoft Data Protection Manager\DPM2012R2\SQLPrep

      DPM サービス アカウント、Microsoft$DPM$Acct、または前のセクションで使用されているアカウント (SQL Serverがリモートの場合) には、フル コントロールアクセス許可が必要です。

リモート SQL Serverの triggerjob.exe パスを確認する

DPM 2012 SP1 と DPM 2012 R2 の両方にリモート SQL Server インスタンスを使用している場合、DPM 2012 R2 SQL Server Prep は DPM 2012 SP1 のリモート SQL Serverの Triggerjob.exe パスを上書きし、次のようにパスを変更します。

  • イベント前

    %DPMInstall%\Program files\Microsoft Data Protection Manager\DPM2012\SQLPrep

  • イベント後

    %DPMInstall%\Program files\Microsoft Data Protection Manager\DPM2012R2\SQLPrep

この動作により、DPM 2012 SP1 スケジュールされたジョブが実行されると、SQL Server エージェントは Triggerjob.exe を見つけることができません。 この現象がシナリオと一致する場合は、DPM 2012 SP1 SQL Server Prep を再実行して問題を解決します。

この特定の現象の詳細については、 こちらの System Center Data Protection Manager ブログ記事を参照してください。

ネットワークとファイアウォールの設定を確認する

SQL Serverまたは DPM に複数のネットワーク インターフェイス コントローラー (NIC) と異なるネットワークを使用していて、SQL Server上のSQL Server エージェントまたはホスト ファイルが DPM サーバーを指している場合は、次のテストを実行して、不適切な IP アドレスまたは正しくないファイアウォール設定を除外します。

  1. Triggerjob.exe 指定されたパスにあることを確認します。

  2. DPM サーバーの Triggerjob.exe ホスト名と IP アドレスをそれぞれ順番に使用して、コマンドを手動で実行します。 次に、コマンドが完了し、DPM エンジンが正常に呼び出されるかどうかをチェックします。

  3. DNS 解決が正しく機能していること、およびファイアウォールが通信をブロックしていないことを確認します。 これを行うには、次の手順に従います。

    1. SQL Serverで、DPM サーバー名と IP アドレスのホスト ファイル エントリを追加します。

    2. DPM サーバーに次のファイアウォール規則を追加します。

      • advfirewall firewall add rule name="SMB for installation (TCP-139,445-In)" dir=in action=allow profile=any localport=139,445 protocol=tcp remoteip=agentIPAddresses

      • advfirewall firewall adds rule name="SMB for installation (UDP- 137,138-In)" dir=in action=allow profile=any localport=137,138 protocol=udp remoteip=agentIPAddresses

      • advfirewall firewall adds rule name="RPC for DPM (TCP- 135,5718,5719,49152-65535-In)" dir=in action=allow profile=any localport=135,5718,5719,49152-65535 protocol=tcp remoteip=agentIPAddresses,SQLIPAddress

スケジュールされたジョブエラーを事前に監視する

SQL SERVER エージェント Scheduler エラーを監視するために、DPM の外部でアラートを設定できます。 たとえば、環境内に System Center 2012 Operations Manager を展開している場合は、ソースによって SQLAgent$MSDPM2012 生成される警告またはエラー メッセージのアラートを監視して生成するように構成できます。 または、イベント ID 208 を具体的に監視することもできます。

注:

驚きを避けるために、DPM コンソールの [回復タスク] 領域で復旧ポイントを確認して、復旧ポイント ジョブの状態とその可用性を定期的にチェックしてください。