Hotfix for SCVMM 2012 R2 Update Rollup 5

No Comments on Hotfix for SCVMM 2012 R2 Update Rollup 5

After the installation of UR 5 for SCVMM 2012 R2 there might be some issues:

There are the following known issues:

Problems with hotfix

After installung UR5 you might see these issues:

  • When you try to deploy or migrate a new High Availability (HA) virtual machine (VM) to a cluster, a registered server message block (SMB) share is not displayed as a target path option.
  • The following critical exception occurs in the Storage Refresher during discovery of the replication service:
    ArgumentNullException -- SetCustomOptions
  • Virtual Machine Manager cannot refresh the replica or primary VM without Automated System Recovery (ASR). Additionally, migration of the recovery VM in an IR Pending state does not perform live migration. Replica VMs are displayed as normal VMs.

Solution

To solve this issues you have to apply KB3039296

For Installation you have to unpack the downloaded file. Then you just copy the dll-files into the VMM-Installation-Path

More about this in KB…

Problem with Workaround

During scale-out, virtual machines are created that have a duplicate name.

Workaround

To solve this issue, you have to apply a change to the sproc. therefor you have to run a query against th VirtualManagerDB:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
<SPROC>
ALTER PROCEDURE [dbo].[prc_WLC_GetUniqueComputerName]
(
    @NamePattern [nvarchar](255),
    @OutputName  [nvarchar](255) output,
    @FoundUniqueName BIT output
)
AS
DECLARE @error INT
SET @error = 0
SET NOCOUNT ON
DECLARE @RNextIndex INT -- Index for the reversed string
DECLARE @NextIndex INT -- Index for the direct string
DECLARE @VObjectName [nvarchar](255) -- the top name used from the vobject table
DECLARE @RegexPattern [nvarchar](255) -- the name pattern in reg ex format for 'like' queries
SET @RegexPattern = (REPLACE(@NamePattern ,'#', '[0-9]'))
SET @FoundUniqueName = 0
SET @RegexPattern = @RegexPattern + '%'
--Retrieve the latest used name in the pattern
SELECT TOP 1 @VObjectName = Name FROM tbl_WLC_VObject WHERE Name LIKE @RegexPattern ORDER BY Name DESC
SELECT TOP 1 @OutputName = ComputerName FROM tbl_WLC_VMDeploymentConfig WHERE ComputerName LIKE @RegexPattern ORDER BY ComputerName DESC
-- Look at both existing VMs and inflight creations from the vm config, find the last name. 
IF ( @OutputName IS NULL OR (@VObjectName IS NOT NULL AND @VObjectName > @OutputName) )
BEGIN
                SET @OutputName = @VObjectName
END
IF ( @OutputName IS NULL ) -- If the name wasn't found in either the VObject or the Deployment config then start from 0
BEGIN
                SET @OutputName = (REPLACE(@NamePattern ,'#', '0'))
END
IF ( @OutputName = REPLACE(@NamePattern ,'#', '9') ) -- Check if the name is the final one in the series
BEGIN
                -- Final number is used, look for gaps.
                DECLARE @usedPatternNumbers TABLE
                (
                                   NUMBER INT
                )
                DECLARE @NextNumber INT
                -- Gather all the used numbers, this is currently somewhat expensive. Need to think of a better way.
                INSERT INTO @usedPatternNumbers
                SELECT dbo.[fn_WLC_GetSequenceNumberFromPatternName](@NamePattern, Name) FROM
                (SELECT Name FROM tbl_WLC_VObject WHERE Name LIKE @RegexPattern
                UNION
                SELECT ComputerName AS Name FROM tbl_WLC_VMDeploymentConfig WHERE ComputerName LIKE @RegexPattern) AS MergedNames
 
                -- Find the first gap and increment it to get the next number
                SELECT @NextNumber = 
                CASE WHEN MAX(NUMBER) = COUNT(NUMBER)
                                THEN CAST(NULL AS INTEGER)
                WHEN MIN(NUMBER) > 1
                                THEN 1
                WHEN MAX(NUMBER) <> COUNT(NUMBER)
                                THEN (
                                                SELECT MIN(NUMBER) + 1
                                                FROM @usedPatternNumbers
                                                WHERE (NUMBER + 1) NOT IN (SELECT NUMBER FROM @usedPatternNumbers))
                ELSE NULL
                END
                FROM @usedPatternNumbers;
                IF ( @NextNumber IS NOT NULL )
                BEGIN
                                SET @OutputName = dbo.[fn_WLC_GetPatternNameFromSequenceNumber] ( @NamePattern, @NextNumber )
                                SET @FoundUniqueName = 1
                END
END
ELSE
BEGIN
    DECLARE @LastUsedSequenceNumber INT
    SET @LastUsedSequenceNumber = dbo.[fn_WLC_GetSequenceNumberFromPatternName](@NamePattern, @OutputName)
    SET @OutputName = dbo.[fn_WLC_GetPatternNameFromSequenceNumber](@NamePattern, @LastUsedSequenceNumber + 1)
    SET @FoundUniqueName = 1
END
SELECT @error = @@ERROR
SET NOCOUNT OFF
RETURN @error
</SPROC>

You can findother ways to change this stored procedure in KB3023195

Dieser Post ist auch verfügbar auf: German

Related Posts

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Back to Top