Hotfix für SCVMM 2012 R2 Update Rollup 5

Keine Kommentare zu Hotfix für SCVMM 2012 R2 Update Rollup 5

Mit der Installation des UR 5 für SCVMM 2012 R2 hat sich der ein oder andere Fehler eingeschlichen.

Folgende Probleme sind bekannt:

Probleme mit Hotfix

Nach dem Installieren des UR5 gibt es folgende bekannten Probleme:

  • Beim Versuch, eine neue hochverfügbare VM im Cluster zu erzeugen oder in ein Cluster zu migrieren, wird ein regisrtiertes SMB-Share nicht als Zielpfadoption angezeigt
  • Während der Suche nach dem Replikationsdienst tritt die folgende kritische Ausnahme im Storage-Aktualisierungsprogramm auf:
    ArgumentNullException -- SetCustomOptions
  • Virtual Machine Manager kann das Replikat oder die primäre VM nicht ohne Automated System Recovery (ASR) aktualisieren. Zudem wird bei der Migration des Wiederherstellungs-VM mit dem Status „IR ausstehend“ keine Live-Migration durchgeführt. Replikat-VMs werden als normale VMs angezeigt.

Lösung

Für die oben genannten Probleme gibt es derzeit einen Hotfix: KB3039296

Für die Installation muss das heruntergeladene Update entpackt werden. Anschließend müssen die enthaltenen DLLs in den VMM-Installationsordner kopiert werden.

Alles weitere im KB…

Problem mit Workaround

Während des Scale-Outs von Service-Templates entstehen VMs mit doppelten Namen.

Workaround

Um das Problem zu beheben, muss eine Stored Procedure angepasst werden. Hierfür eine neue Query auf die VirtualManagerDB ausführen:

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>

weitere Installationswege finden sich im KB3023195

Dieser Post ist auch verfügbar auf: Englisch

Related Posts

Leave a comment

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Back to Top