概要
Microsoft システム センター 2012 R2 Virtual Machine Manager (VMM 2012 R2) をインストールすると、VMM 更新プログラム ロールアップ 8 またはそれ以降の更新プログラムの再インストールが失敗します。 さらに、次のエラー メッセージが表示され、VMM を再インストールする場合します。
時間: InnerException.Type: 生じます、InnerException.Message: 'PK_tbl_WLC_ServiceTemplate' の制約を主キーの違反が発生します。 オブジェクト 'dbo.tbl_WLC_ServiceTemplate' で重複するキーを挿入できません。 重複するキーの値は、< key_value > です。
Virtual Machine Manager を再インストールします。
次の手順を実行します。
- Virtual Machine Manager をアンインストールします。 データベースの保持] オプションを選択します。
- オープン SQL Management Studio では、保持されているデータベースへの接続、および。
- 次のストアド プロシージャを実行します。
/****** Object: StoredProcedure [dbo].[prc_WLC_GetVNetworkAdapterByNicId] Script Date: 12/16/2015 2:13:12 AM ******/ -- ========================================================= -- Create date: 08/31/2007 -- Description: Get VNetworkAdapter for a given NicId -- ========================================================= ALTER PROCEDURE [dbo].[prc_WLC_GetVNetworkAdapterByNicId] @VNicId uniqueidentifier AS BEGIN DECLARE @error int SET @error = 0 SET NOCOUNT ON; SELECT [Name], [Description], [OwnerIdentifier], [CreationTime], vna.[ModifiedTime], [Accessibility], [ObjectState], [VNicId], [HWProfileId], [ParentType], [VirtualNetwork], [MACAddressType], [MACAddress], [IPv4AddressType], [IPv6AddressType], [PortId], [DeviceId], [NetworkAdapterType], [VMSubnetId], [VMNetworkId], [PortClassificationId], [PortProfileSetId], [VLanEnabled], [VLanId], [VmwAdapterIndex], [VmwPortGroup], [SlotId], [MACSpoofingEnabled], [EnableGuestIPNetworkVirtualizationUpdates], [VMNetworkOptimizationEnabled], [HostId], [LogicalSwitchId], [NetworkKBytesReadTieredPerfCounterID], [NetworkKBytesWriteTieredPerfCounterID], [VMNetworkServiceSetting], [UsesSriov], [IsUsedForHostManagement], [IPv4Addresses], [IPv6Addresses], [DefaultGateways], [DNSServers], [TemplateNicName], compliance.PortClassificationComplianceErrors AS [PortClassificationComplianceErrors], compliance.VMNetworkComplianceErrors AS [VMNetworkComplianceErrors] FROM dbo.tbl_WLC_VNetworkAdapter vna LEFT JOIN dbo.tbl_NetMan_VirtualNetworkAdapterCompliance compliance ON vna.VNicId = compliance.VirtualNetworkAdapterId WHERE VNicId = @VNicId SET @error = @@ERROR SET NOCOUNT OFF RETURN @error END IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[prc_RBS_UserRole_Add]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1) SET NOEXEC OFF ELSE SET NOEXEC ON GO /****** Object: StoredProcedure [dbo].[prc_RBS_UserRole_Add] Script Date: 10/03/2007 12:13:45 ******/ ALTER PROCEDURE [dbo].[prc_RBS_UserRole_Add] ( @RoleID uniqueidentifier, @ProfileType tinyint, @Description nvarchar(2048), @Name nvarchar(256), @OwnerIdentifier nvarchar(256), @ParentUserRole uniqueidentifier, @LastUpdatedTimestamp datetime, @ShowPROTips bit, @VMNetworkMaximum smallint, @VMNetworkMaximumPerUser smallint, @VPNConnectionMaximum smallint, @VPNConnectionMaximumPerUser smallint, @VMNetworkVPNMaximumBandwidthInKbps bigint, @VMNetworkVPNMaximumBandwidthOutKbps bigint, @NATConnectionMaximum smallint = NULL, @NATConnectionMaximumPerUser smallint = NULL ) AS BEGIN TRAN SET NOCOUNT ON DECLARE @error int DECLARE @IsDuplicateName bit DECLARE @IsRoleAlreadyPresent bit SELECT @IsDuplicateName = [dbo].[fn_RBS_UserRole_NameExists](@RoleID, @ParentUserRole, @Name) -- This is especially used in Upgrade scenarios where we are inserting Administrator role SELECT @IsRoleAlreadyPresent = Count(RoleID) FROM [dbo].[tbl_RBS_UserRole] WHERE RoleID = @RoleID IF (@IsDuplicateName = 0 AND @IsRoleAlreadyPresent = 0) BEGIN INSERT INTO [dbo].[tbl_RBS_UserRole] ([RoleID] ,[ProfileType] ,[Description] ,[Name] ,[OwnerIdentifier] ,[ParentUserRole] ,[LastUpdatedTimestamp] ,[ShowPROTips] ,[VMNetworkMaximum] ,[VMNetworkMaximumPerUser] ,[VPNConnectionMaximum] ,[VPNConnectionMaximumPerUser] ,[VMNetworkVPNMaximumBandwidthInKbps] ,[VMNetworkVPNMaximumBandwidthOutKbps] ,[NATConnectionMaximum] ,[NATConnectionMaximumPerUser] ) VALUES ( @RoleID, @ProfileType, @Description, @Name, @OwnerIdentifier, @ParentUserRole, @LastUpdatedTimestamp, @ShowPROTips, @VMNetworkMaximum, @VMNetworkMaximumPerUser, @VPNConnectionMaximum, @VPNConnectionMaximumPerUser, @VMNetworkVPNMaximumBandwidthInKbps, @VMNetworkVPNMaximumBandwidthOutKbps, @NATConnectionMaximum, @NATConnectionMaximumPerUser ) -- Insert flattened tree of the hierarchy for this user role INSERT INTO [dbo].[tbl_RBS_UserRoleHierarchy] SELECT RoleId, ParentRoleId, hl FROM view_RBS_UserRoleParentChildRelation ur where ur.RoleID = @RoleID SELECT @error = @@ERROR END ELSE BEGIN SET @error = 50008 END SET NOCOUNT OFF COMMIT TRAN RETURN @error Go SET NOEXEC OFF --------------------------------------------------------------------------------------------IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[prc_RBS_UserRole_CommonUpdate]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1) SET NOEXEC OFF ELSE SET NOEXEC ON GO /****** Object: StoredProcedure [dbo].[prc_RBS_UserRole_CommonUpdate] Script Date: 10/03/2007 12:13:45 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[prc_RBS_UserRole_CommonUpdate] ( @RoleID uniqueidentifier, @Description nvarchar(2048), @OwnerIdentifier nvarchar(256), @Name nvarchar(256), @LastUpdatedTimestamp datetime, @ShowPROTips bit, @VMNetworkMaximum smallint, @VMNetworkMaximumPerUser smallint, @VPNConnectionMaximum smallint, @VPNConnectionMaximumPerUser smallint, @VMNetworkVPNMaximumBandwidthInKbps bigint, @VMNetworkVPNMaximumBandwidthOutKbps bigint, @NATConnectionMaximum smallint = NULL, @NATConnectionMaximumPerUser smallint = NULL ) AS SET NOCOUNT ON DECLARE @error int DECLARE @ParentUserRole uniqueidentifier DECLARE @IsDuplicateName bit DECLARE @OldName nvarchar(256) SELECT @ParentUserRole = [ParentUserRole], @OldName = [Name] FROM [dbo].[tbl_RBS_UserRole] WHERE [RoleID] = @RoleID IF (@OldName = @Name) BEGIN -- We are not changing role name. This is necessary if Admin has already an SSU1 and TA created SSU1, we should not error out here SELECT @IsDuplicateName = 0 END ELSE BEGIN SELECT @IsDuplicateName = [dbo].[fn_RBS_UserRole_NameExists](@RoleID, @ParentUserRole, @Name) END IF (@IsDuplicateName = 0) BEGIN UPDATE [dbo].[tbl_RBS_UserRole] SET [Description] = @Description, [OwnerIdentifier] = @OwnerIdentifier, [Name] = @Name, [LastUpdatedTimestamp] = @LastUpdatedTimestamp, [ShowPROTips] = @ShowPROTips, [VMNetworkMaximum] = @VMNetworkMaximum, [VMNetworkMaximumPerUser] = @VMNetworkMaximumPerUser, [VPNConnectionMaximum] = @VPNConnectionMaximum, [VPNConnectionMaximumPerUser] = @VPNConnectionMaximumPerUser, [VMNetworkVPNMaximumBandwidthInKbps] = @VMNetworkVPNMaximumBandwidthInKbps, [VMNetworkVPNMaximumBandwidthOutKbps] = @VMNetworkVPNMaximumBandwidthOutKbps, [NATConnectionMaximum] = @NATConnectionMaximum, [NATConnectionMaximumPerUser] = @NATConnectionMaximumPerUser WHERE [RoleID] = @RoleID SELECT @error = @@ERROR END ELSE BEGIN SET @error = 50008 END SET NOCOUNT OFF RETURN @error GO SET NOEXEC OFF
- 元のインストール メディアから VMM 2012 R2 をインストールします。 場合によっては、VMM サービスは正しく起動しない場合があります。 ただし、この動作は無視してかまいませんこの時点で。
- VMM 2012 R2 インストールされた以前のバージョンに対応する (更新プログラムのロールアップ 7 や 8 など) 用の更新プログラム ロールアップを適用します。 データベースが正常に機能するために必要です。 UR7 または UR8 の上、UR にリリースのバージョンから更新する場合は、その UR に直接更新できます。 UR7 または UR8 をインストールする必要はありません。 たとえば、リリース版では、UR14 に直接アップグレードをインストールし、手順 6 で 2 番目のスクリプトを実行できます。
- SQL Management Studio を使用して、VMM データベースに対して、次のストアド プロシージャを実行します。
/****** Object: StoredProcedure [dbo].[prc_WLC_GetVNetworkAdapterByNicId] Script Date: 12/16/2015 2:13:12 AM ******/ -- ========================================================= -- Create date: 08/31/2007 -- Description: Get VNetworkAdapter for a given NicId -- ========================================================= ALTER PROCEDURE [dbo].[prc_WLC_GetVNetworkAdapterByNicId] @VNicId uniqueidentifier AS BEGIN DECLARE @error int SET @error = 0 SET NOCOUNT ON; SELECT [Name], [Description], [OwnerIdentifier], [CreationTime], vna.[ModifiedTime], [Accessibility], [ObjectState], [VNicId], [HWProfileId], [ParentType], [VirtualNetwork], [MACAddressType], [MACAddress], [IPv4AddressType], [IPv6AddressType], [PortId], [DeviceId], [NetworkAdapterType], [VMSubnetId], [VMNetworkId], [PortClassificationId], [PortProfileSetId], [VLanEnabled], [VLanId], [VmwAdapterIndex], [VmwPortGroup], [SlotId], [MACSpoofingEnabled], [EnableGuestIPNetworkVirtualizationUpdates], [VMNetworkOptimizationEnabled], [HostId], [LogicalSwitchId], [NetworkKBytesReadTieredPerfCounterID], [NetworkKBytesWriteTieredPerfCounterID], [VMNetworkServiceSetting], [UsesSriov], [IsUsedForHostManagement], [IPv4Addresses], [IPv6Addresses], [DefaultGateways], [DNSServers], [TemplateNicName], compliance.PortClassificationComplianceErrors AS [PortClassificationComplianceErrors], compliance.VMNetworkComplianceErrors AS [VMNetworkComplianceErrors], [AccessControlListID], compliance.NetworkAccessControlListComplianceErrors AS [NetworkAccessControlListComplianceErrors] FROM dbo.tbl_WLC_VNetworkAdapter vna LEFT JOIN dbo.tbl_NetMan_VirtualNetworkAdapterCompliance compliance ON vna.VNicId = compliance.VirtualNetworkAdapterId WHERE VNicId = @VNicId SET @error = @@ERROR SET NOCOUNT OFF RETURN @error END GO
- 2012 R2 の VMM サーバーを再起動し、VMM サービスが正常に起動するかどうかを確認します。
高可用性の Virtual Machine Manager (HAVMM) を再インストールします。
これを行うには、次の手順を実行します。
- SCVMM の管理サーバーをアンインストールします。 これを行うときは、HAVMM のすべてのノード上のデータベースの保存オプションを選択します。
- SQL Management Studio を開き、保持されている VMM データベースに接続します。
- VMM データベース上には、 Virtual Machine Manager を再インストール」の手順 3 で、スクリプトを実行します。
- HAVMM の最初のノードで、次の手順を実行します。
- 既存のデータベースを選択することによって、元のインストール メディアから VMM 2012 R2 をインストールします。 注:場合によっては、VMM サービスは正しく起動しない場合があります。 ただし、この時点でこの現象を安全に無視できます。
- 最新版を適用されていた更新プログラムのロールアップがインストールされている (UR8 またはそれ以降のバージョン)、VMM サーバーをアンインストールする前にします。
- VMM データベースには、 Virtual Machine Manager を再インストール」の手順 6 のインストール後のスクリプトを実行します。
- VMM サーバーを再インストールするのには残りの HAVMM ノードに手順 4 と 5 を繰り返します。
- アップグレードして利用可能な最新の UR、UR が承認されると、すべての VMM サーバーの環境にするにし、UR レベルの最新の VMM エージェントへのすべてのホストを更新します。