Der MQSeries-Adapter ruft keine Nachrichten mehr von einem gruppierten MQSeries-Warteschlangen-Manager ab, wenn für den Warteschlangen-Manager ein Failover auf einen anderen Clusterknoten ausgeführt wird.
Dieser Artikel hilft Ihnen, das Problem zu umgehen, dass der MQSeries-Adapter keine Nachrichten mehr von einem gruppierten MQSeries-Warteschlangen-Manager abruft, wenn der Warteschlangen-Manager ein Failover auf einen anderen Clusterknoten führt.
Ursprüngliche Produktversion: BizTalk Server 2020, BizTalk Server 2016, BizTalk Server 2013, BizTalk Server 2010, BizTalk Server 2009
Ursprüngliche KB-Nummer: 893059
Problembeschreibung
Sie konfigurieren den Microsoft BizTalk Server-Adapter für MQSeries, um Nachrichten von einem gruppierten MQSeries-Warteschlangen-Manager zu empfangen. Wenn für den Warteschlangen-Manager ein Failover auf einen anderen Clusterknoten ausgeführt wird, ruft der MQSeries-Adapter keine Nachrichten mehr aus der gruppierten Warteschlange ab. Wenn dieses Verhalten auftritt, wird das folgende Ereignis im Anwendungsprotokoll protokolliert:
Ereignistyp: Warnung
Ereignisquelle: BizTalk Server 20xx
Ereigniskategorie: BizTalk Server 20xx
Ereignis-ID: 5740
Datum: 31.12.2006 Uhrzeit: 11:12:13
Benutzer: Nicht zutreffend
Computer:
Beschreibung: Der Adapter "MQSeries" hat eine Fehlermeldung ausgelöst. Details "Fehler beim Öffnen des Warteschlangen-Manager-Namens = MYQMNAME Grundcode = 2059.".
Hinweis
In diesem Protokolleintrag <20xx>
stellt die tatsächliche Versionsnummer und <MYQMNAME>
den tatsächlichen Warteschlangen-Manager-Namen dar.
Problemumgehung
Um dieses Problem zu umgehen, erstellen Sie eine geplante Aufgabe auf beiden Knoten. Gehen Sie dazu wie folgt vor:
Öffnen Sie auf dem aktiven Knoten Services.msc. Es sollten zwei MSDTC-Dienste aufgeführt werden: einer, der lokal ist und keine GUID aufweist, und einer, der gruppiert ist und über eine GUID verfügt.
Führen Sie an einer Eingabeaufforderung mit erhöhten Rechten den folgenden Befehl aus:
sc queryex | find /I "Transaction"
Die Befehlsausgabe enthält die GUID, die Sie für das Skript in dieser Prozedur verwenden müssen. Die GUID:
Distributed Transaction Coordinator (01234567-89ab-cdef-0123-456789abcdef)
Speichern Sie den folgenden Code in einer Datei, und benennen Sie die Datei Shutdownmqadapter.vbs. Sie können die Datei auf einem anderen Datenträger als dem Quorumdatenträger speichern.
Hinweis
In diesem Code ist die angegebene GUID (
01234567-89ab-cdef-0123-456789abcdef
) ein Platzhalter. Ersetzen Sie diese GUID durch die tatsächliche gruppierte MSDTC-GUID, die Sie sich in Schritt 2 notiert haben.Option Explicit On Error Resume Next Dim sComputerName, oWMIService, colRunningServices, oService, colProcessList, objProcess If Wscript.Arguments.Count = 0 Then sComputerName = "." Call ServStat Wscript.Quit End If Sub ServStat Set oWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & sComputerName& "\root\cimv2") Set colRunningServices = oWMIService.ExecQuery _ ("Select * from Win32_Service where DisplayName='Distributed Transaction Coordinator (01234567-89ab-cdef-0123-456789abcdef)'") For Each oService in colRunningServices 'Wscript.Echo oService.DisplayName & VbTab & oService.State If (oService.State="Stopped") Then 'Wscript.Echo "Stopped" 'find the dllhost Set colProcessList = oWMIService.ExecQuery ("SELECT * FROM Win32_Process WHERE Name = 'DLLHOST.EXE'") For Each objProcess in colProcessList If inStr(objProcess.CommandLine, "C691D827-19A0-42E2-B5E8-2892401481F5")>0 Then 'Wscript.Echo objProcess.ProcessId Dim objShell Set objShell = CreateObject("WScript.Shell") objShell.Run "cmd /k taskkill /F /PID " & objProcess.ProcessId & "& exit" WScript.Quit End If Next End If Next End Sub
Wählen Sie Start aus, geben Sie Task ein, und wählen Sie dann aufgabenplaner in der Ergebnisliste aus.
Wählen Sie im Taskplaner die Option Aktion>Create Einfache Aufgabe aus.
Führen Sie die Bildschirme des Assistenten durch, um eine geplante Aufgabe zu erstellen, die die Shutdownmqagent.vbs Datei täglich ausführt.
Hinweis
Legen Sie für den 6-Schritt fest, dass der Zeitplan um Mitternacht beginnt und 24 Stunden lang alle 1 Minute wiederholt wird.
Frühere BizTalk-Versionen verfügen möglicherweise über eine andere MQSAgent COM+-GUID. Sie können anstelle von C691D827-19A0-42E2-B5E8-2892401481F5
enthalten6D06157A-730B-4CB3-BD11-D48AC6B8A4BB
. Daher müssen Sie möglicherweise das vorhandene Skript ändern, nachdem Sie das Produkt aktualisiert haben.
Weitere Informationen
Selbst wenn der IBM MQ-Warteschlangen-Manager als gruppierte Ressource in einer Failoverclusterrolle ausgeführt wird, sollten Sie die MQSAgent COM+-Anwendung nicht gruppieren. Dies liegt daran, dass DLLHost.exe, in dem die COM+-Anwendung ausgeführt wird, nicht clusterfähig ist. Die MQSAgent COM+-Anwendung muss auf beiden Knoten einzeln installiert und konfiguriert sein.
Um Hochverfügbarkeit sicherzustellen, stellen Sie sicher, dass Sie sowohl die gruppierte IBM MQ-Warteschlangen-Manager-Ressource als auch die gruppierte MSDTC-Ressource in derselben Clusterrolle zusammen mit dem Überwachungsskript aus dem Abschnitt Problemumgehung verwenden.
Gilt für
- BizTalk Server 2020 Enterprise
- BizTalk Server 2016 Enterprise
- BizTalk Server 2013 R2 Enterprise
- BizTalk Server 2013 Enterprise
- BizTalk Server Enterprise 2010
- BizTalk Server 2009 Enterprise