сен 23
Накопительный пакет обновления 3 для System Center 2012 R2 Virtual Machine Manager

​Следует отметить интересный факт о накопительном обновлении 3 для SCVMM 2012 R2.
Дело в том, что это обновление, как для сервера, так и для консоли управления, приходит среди прочих через центр обновления Windows

20140923044323827.png
Однако, в статье KB2695414 в разделе "Installation instructions" говорится о необходимости выполнить sql-скрипт для корректной работы обновления:

 

/* script starts here */ ALTER Procedure [dbo].[prc_RBS_UserRoleSharedObjectRelation_Insert] ( @ID uniqueidentifier, @ObjectID uniqueidentifier, @ObjectType int, @RoleID uniqueidentifier, @UserOrGroup varbinary (85), @ForeignAccount nvarchar (256), @IsADGroup bit, @ExistingID uniqueidentifier = NULL OUTPUT ) AS SET NOCOUNT ON SELECT @ExistingID = [ID] FROM [dbo].[tbl_RBS_UserRoleSharedObjectRelation] WHERE [ObjectID] = @ObjectID AND [RoleID] = @RoleID AND -- Select owner OR Select all which matches ForeignAccount or UserOrGroup OR -- both ForeignAccount and UserOrGroup is NULL (([UserOrGroup] = @UserOrGroup OR [ForeignAccount] = @ForeignAccount) OR ([UserOrGroup] IS NULL AND @UserOrGroup IS NULL AND [ForeignAccount] IS NULL AND @ForeignAccount IS NULL)) /* Ignore duplicate entries */ IF (@ExistingID IS NULL) BEGIN INSERT [dbo].[tbl_RBS_UserRoleSharedObjectRelation] ([ID] ,[ObjectID] ,[ObjectType] ,[RoleID] ,[UserOrGroup] ,[ForeignAccount] ,[IsADGroup] ,[IsOwner] ) VALUES ( @ID, @ObjectID, @ObjectType, @RoleID, @UserOrGroup, @ForeignAccount, @IsADGroup, 0 ) END SET NOCOUNT OFF RETURN @@ERROR GO ALTER PROCEDURE [dbo].[prc_WLC_IsVHDSharedByAnotherVmOnHost] @HostId [uniqueidentifier], @VHDId [uniqueidentifier], @VMId [uniqueidentifier] AS BEGIN DECLARE @error int SET @error = 0 SET NOCOUNT ON; SELECT TOP 1 1 FROM dbo.[fn_WLC_GetParentChildRelationForVHD](@VHDId) vcr JOIN dbo.tbl_WLC_VDrive vd ON vcr.VHDId = vd.VHDId JOIN dbo.tbl_WLC_VObject vo ON vo.ObjectId = vd.ParentId JOIN dbo.tbl_WLC_VMInstance vi ON vo.ObjectId = vi.VMInstanceId WHERE vo.HostId = @HostId AND vo.ObjectId <> @VMId AND vi.RootVMInstanceId <> @VMId SET @error = @@ERROR SET NOCOUNT OFF RETURN @error END GO IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'prc_ADHC_HostDisk_GetByClusterDiskIdAndHostId') AND OBJECTPROPERTY(id, N'IsProcedure') = 1) DROP PROCEDURE dbo.prc_ADHC_HostDisk_GetByClusterDiskIdAndHostId GO CREATE PROCEDURE dbo.prc_ADHC_HostDisk_GetByClusterDiskIdAndHostId ( @ClusterDiskID guid, @HostID guid ) AS DECLARE @error int SET @error = 0 SET NOCOUNT ON SELECT [DiskID], [Signature], [UniqueID], [HostID], [LibraryServerID], [StArrayID], [LastUpdatedDateTime], [DeviceID], [Index], [Capacity], [IsPassThroughCapable], [IsSanAttached], [ClusterDiskID], [Location], [StorageLUNID], [SMLunId], [SMLunIdFormat], [SMLunIdNamespace], [SANType], [Bus], [Lun], [Target], [Port], [IsVHD], [StClassificationId] FROM dbo.tbl_ADHC_HostDisk WHERE [HostID] = @HostID AND [ClusterDiskID] = @ClusterDiskID SELECT @error = @@ERROR SET NOCOUNT OFF RETURN @error GO -- The stored procedure will be deleted after the OS table is updated IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[prc_IL_AddOSTemp]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[prc_IL_AddOSTemp] GO CREATE PROCEDURE [dbo].[prc_IL_AddOSTemp] @OSId GUID, @Name nvarchar(64), @Description nvarchar(max), @Edition int, @ProductType int, @Version nvarchar(32), @Architecture nvarchar(32), @OSFlags int, @VMWareGuestId nvarchar(32), @OSType int AS BEGIN DECLARE @error int SET @error = 0 SELECT * FROM dbo.tbl_IL_OS WHERE OSId = @OSId -- If the OS entry doesn't exist, add the entry. -- If it exists, update IF (@@ROWCOUNT = 0) BEGIN INSERT INTO dbo.tbl_IL_OS ( [OSId], [Name], [Description], [Edition], [ProductType], [Version], [Architecture], [OSFlags], [VMWareGuestId], [OSType] ) VALUES ( @OSId, @Name, @Description, @Edition, @ProductType, @Version, @Architecture, @OSFlags, @VMWareGuestId, @OSType ) END ELSE BEGIN UPDATE dbo.tbl_IL_OS SET [Name] = @Name, [Description] = @Description, [Edition] = @Edition, [ProductType] = @ProductType, [Version] = @Version, [Architecture] = @Architecture, [OSFlags] = @OSFlags, [VMWareGuestId] = @VMWareGuestId, [OSType] = @OSType WHERE OSId = @OSId END SET @error = @@ERROR RETURN @error END GO prc_IL_AddOSTemp 'A3281FA8-6633-4A1D-9AB2-6B563121EC8D', 'Ubuntu Linux 14.04 (32 bit)', 'Ubuntu Linux 14.04 (32 bit)', NULL, NULL, NULL, x86 , 0x1C, 'ubuntuGuest', 1 GO prc_IL_AddOSTemp '2AF8E4A1-05F0-444E-A96F-D4D5B86B5CC8', 'Ubuntu Linux 14.04 (64 bit)', 'Ubuntu Linux 14.04 (64 bit)', NULL, NULL, NULL, amd64 , 0x1C, 'ubuntu64Guest', 1 GO -- Delete the temporary stored procedure -- used to populate this table IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[prc_IL_AddOSTemp]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[prc_IL_AddOSTemp] GO /* script ends here */

Сначала я решил, что выполнение этого скрипта "зашито" в обновление, раз оно пришло из центра обновлений без каких-либо инструкций, но позднее обнаружил странную ошибку при попытке предоставить доступ определенному пользователю к шаблону служб. "В VMM возникло критическое исключение, создан отчет об исключении по адресу C:\ProgramData\VMMLogs\SCVMM.6b10258f-b72a-45b4-95ef-208d4f990b1f\report.txt.". По указанному адресу я нашел "Exception Message=Не удалось подключиться к базе данных VMM из-за общего сбоя базы данных. Убедитесь, что сервер SQL Server запущен и правильно настроен, и повторите операцию.".
Это натолкнуло меня на мысль о том, что надо все-таки попробовать применить скрипт из статьи базы знаний. И мысль была верной, после выполнения этого скрипта ошибка пропала.
Рекомендую прочитать KB, потому что там оговаривается еще один скользкий момент по поводу DHCP.

Заметки

Нет заметок для этой записи.