801 %ObjectType と VmmAdminUI が見つからないと、VMM での作業エラーが停止しました

この記事では、System Center Virtual Machine Manager (SCVMM) コンソールで 801 が見つからない %ObjectTypeVmmAdminUI が動作エラーを停止したことをトラブルシューティングする方法について説明します。

注:

ホーム ユーザー: この記事は、テクニカル サポート エージェントと IT プロフェッショナルのみを対象としています。 問題のヘルプをお探しの場合は、 Microsoft コミュニティにお問い合わせください

元の製品バージョン: System Center 2012 Virtual Machine Manager、Microsoft System Center 2012 R2 Virtual Machine Manager、System Center 2016 Virtual Machine Manager
元の KB 番号: 2756886

現象

これらの 801 エラーは、通信の問題、データベースの破損、削除されたファイル、Hyper-V の同時変更によってトリガーされます。

仮想マシン マネージャー (VMM) コンソールの [ジョブ ] ビューに記録される一般的なエラーを次に示します。

  • 801 が見つからないオブジェクトがある場合:

    エラー 説明 推奨される操作
    801 VMM で %ObjectType が見つかりません。object %FriendlyName;. ライブラリ オブジェクトが有効であることを確認してから、操作をもう一度試してください。

    例:

    エラー (801)
    VMM で VM オブジェクト ObjectID が見つかりません。
    推奨されるアクション
    ライブラリ オブジェクトが有効であることを確認してから、操作をもう一度試してください。

    さらに、SCVMM ETL トレースには次のエラーが記録されます。

    Carmine エラーが発生しました: LibObjectNotFound (801)

  • 仮想マシン (VM) 更新ジョブが失敗すると、次のエラー メッセージが表示されます。

    • VMM で VM オブジェクトが見つかりません。

      VMM の詳細で VM オブジェクト エラーが見つかりません。

    • VMM で ISO オブジェクトが見つかりません。

      VMM の詳細で ISO オブジェクト エラーが見つかりません。

    • VMM で VirtualHardDisk オブジェクトが見つかりません。

      VMM の詳細で VirtualHardDisk オブジェクト エラーが見つかりません。

  • 801 の問題がある VM のプロパティを開こうとすると、次のエラー メッセージが表示されます。

    VmmAdminUI が動作を停止しました

    VmmAdminUI の詳細が動作を停止しました。

    エラーの問題の詳細を表示するとき、またはMSINFO32でWindows エラー報告 ログを表示すると、次の情報が表示されます。

    MSINFO32でのWindows エラー報告ログ記録の詳細。

    注:

    仮想マシンが 801 エラーによって失敗した状態になっている場合、コンソールから削除することはできません。

  • You may receive the following error message:

    エラー (20413)
    VMM で重大な例外が発生し、C:\ProgramData\VMMLogs\SCVMM に例外レポートが作成されました。

原因

この問題は、VMM にデータベース内に存在しなくなったオブジェクトを表示する孤立したレコードがある場合に発生する可能性があります。

解決方法

この問題を解決するには、次の手順に従って、孤立したオブジェクトをデータベースから削除します。

  1. 仮想マシンがホスト上に存在するかどうか、および仮想マシンが実行中か停止しているかを判断します。

    • VM がホスト上にあり、起動できない場合は、エラー メッセージで識別されたオブジェクトが存在することを確認します。 たとえば、エラーで仮想ハード ディスクが見つからないと表示された場合は、ハード ディスクを格納する場所に移動し、手順 2 に進みます。

    • VHDX ファイルがどこにあるかわからない場合、仮想マシンが実行中の状態である場合は、SCVMM サーバー上の PowerShell で実行 Get-SCVirtualMachine -VMMServer localhost -Name "<VMNAME>" し、 場所 行で VM の VHDX の場所を表示します。

      • VHDx ファイルがその場所にない場合は、問題です。
      • VHDx がその場所にあり、Hyper-V で VM を起動できる場合は、手順 2 に進み、VMMAdminUI の問題を解決します。
  2. を実行 get-scvirtualmachine <VMNAME> | Remove-scvirtualmachine -force して、VMM コンソールから VM を削除します。

    注:

    VM ファイルは削除されません。

    VM が SCVMM コンソールから削除された場合は、ホストを右クリックし、[Virtual Machinesの更新] をクリックします。 または、本体を閉じてもう一度開きます。

    PowerShell コマンドが機能しない場合は、スクリプトを実行して SQL VirtualMachineDB データベースから VM を削除する必要があります。

    重要

    何かを行う前に、VMM データベースをバックアップします。

    SCVMM データベースのホスト元を特定するには、[ 設定] に移動し、[ 全般] をクリックします。 データベース接続は次のように表示されます。

    データベース接続情報の詳細。

  3. SCVMM データベースをホストする SQL サーバー上のSQL Server Management Studioで、SQL インスタンスを開きます。 左側の [データベース] フォルダーで、 VirtualManagerDB (またはデータベースの名前が変更されたもの) を選択し、データベースの名前がツール バーのドロップダウン リストに表示されていることを確認します。 [ 新しいクエリ] を選択し、次のスクリプトをクエリ フィールドに貼り付けます。

    BEGIN TRANSACTION T1
    DECLARE custom_cursor CURSOR FOR
    SELECT ObjectId from
    dbo.tbl_WLC_VObject WHERE [Name] = 'VMName'
    DECLARE @ObjectId uniqueidentifier
    OPEN custom_cursor
    FETCH NEXT FROM custom_cursor INTO @ObjectId
    WHILE(@@fetch_status = 0)
    BEGIN
    DECLARE vdrive_cursor CURSOR FOR
    SELECT VDriveId, VHDId, ISOId from
    dbo.tbl_WLC_VDrive WHERE ParentId = @ObjectId
    DECLARE @VDriveId uniqueidentifier
    DECLARE @VHDId uniqueidentifier
    DECLARE @ISOId uniqueidentifier
    
    OPEN vdrive_cursor
    FETCH NEXT FROM vdrive_cursor INTO @VDriveId, @VHDId, @ISOId
    WHILE(@@fetch_status = 0)
    BEGIN
      DELETE FROM dbo.tbl_WLC_VDrive
             WHERE VDriveId = @VDriveId
      if(@VHDId is NOT NULL)
      BEGIN
    
       DELETE FROM dbo.tbl_WLC_VHD
       WHERE VHDId = @VHDId
       DELETE FROM dbo.tbl_WLC_PhysicalObject
       WHERE PhysicalObjectId = @VHDId
      END
      if(@ISOId is NOT NULL)
      BEGIN
    
       DELETE FROM dbo.tbl_WLC_ISO
              WHERE ISOId = @ISOId
       DELETE FROM dbo.tbl_WLC_PhysicalObject
       WHERE PhysicalObjectId = @ISOId
      END
    
         FETCH NEXT FROM vdrive_cursor INTO @VDriveId, @VHDId, @ISOId
       END
    CLOSE vdrive_cursor
    DEALLOCATE vdrive_cursor
    -----------------
    DECLARE floppy_cursor CURSOR FOR
    SELECT VFDId, vFloppyId from
    dbo.tbl_WLC_VFloppy WHERE HWProfileId = @ObjectId
    DECLARE @vFloppyId uniqueidentifier
    DECLARE @vfdId uniqueidentifier
    OPEN floppy_cursor
    FETCH NEXT FROM floppy_cursor INTO @vfdId, @vFloppyId
    WHILE(@@fetch_status = 0)
    BEGIN
          DELETE FROM dbo.tbl_WLC_VFloppy
      WHERE VFloppyId = @vFloppyId
    
      if(@vfdid is NOT NULL)
      BEGIN
       DELETE FROM dbo.tbl_WLC_VFD
       WHERE VFDId = @vfdId
       DELETE FROM dbo.tbl_WLC_PhysicalObject
       WHERE PhysicalObjectId = @vfdId
    
      END
    
         FETCH NEXT FROM floppy_cursor INTO @vfdId, @vFloppyId
       END
    CLOSE floppy_cursor
    DEALLOCATE floppy_cursor
    ----------------
    DECLARE checkpoint_cursor CURSOR FOR
    SELECT VMCheckpointId from
    dbo.tbl_WLC_VMCheckpoint WHERE VMId = @ObjectId
    DECLARE @vmCheckpointId uniqueidentifier
    OPEN checkpoint_cursor
    FETCH NEXT FROM checkpoint_cursor INTO @vmCheckpointId
     WHILE(@@fetch_status = 0)
    BEGIN
         DELETE FROM dbo.tbl_WLC_VMCheckpointRelation
     WHERE VMCheckpointId = @vmCheckpointId
    
        FETCH NEXT FROM checkpoint_cursor INTO @vmCheckpointId
       END
    CLOSE checkpoint_cursor
    DEALLOCATE checkpoint_cursor
    -------------------------
    ---------Clean checkpoint
    DELETE FROM dbo.tbl_WLC_VMCheckpoint
    WHERE VMId = @ObjectID
    
            exec [dbo].[prc_VMMigration_Delete_VMInfoAndLUNMappings] @ObjectId
            DECLARE @RefreshId uniqueidentifier
    
            DELETE FROM dbo.tbl_WLC_VAdapter
    WHERE HWProfileId = @ObjectId
    
            DELETE FROM dbo.tbl_WLC_VNetworkAdapter
    WHERE HWProfileId = @ObjectId
    
            DELETE FROM dbo.tbl_WLC_VCOMPort
    WHERE HWProfileId = @ObjectId
            DELETE FROM dbo.tbl_WLC_HWProfile
    WHERE HWProfileId = @ObjectId
            DELETE FROM dbo.tbl_WLC_VMInstance
    WHERE VMInstanceId = @ObjectId
            DELETE FROM dbo.tbl_WLC_VObject
    WHERE ObjectId = @ObjectId
        FETCH NEXT FROM custom_cursor INTO @ObjectId
      END
    CLOSE custom_cursor
    DEALLOCATE custom_cursor
    COMMIT TRANSACTION T1
    

    このスクリプトで行う必要がある唯一の変更は 4 行目です。 ここで、VMNAME を削除する VM の名前に変更しますが、引き続き単一引用符を使用します。 その後、スクリプトを実行すると、次のように影響を受ける一連の行が返されます。

    オブジェクト エクスプローラーで V M の名前を変更します。

    注:

    VM ファイルは削除されません。

  4. SCVMM UI に戻ります。 SQL スクリプトを実行した VM のインスタンスが 2 つ表示される場合があります。 ホストを右クリックし、[更新] Virtual Machinesをクリックします。 または、コンソールを閉じてもう一度開いてデータベースを再読み込みする必要がある場合があります。

詳細情報

この解決は、物理から仮想への変換 (P2V) を実行するときに発生する 801 エラーにも使用できます。