2016-08-14 3 views
0

Ich habe einen Windows-Dienst erstellt, um Empfangsort zu überwachen und Port-Ereignisse zu senden, dh Start/Stopp/aktiviert/deaktiviert/eingetragen/nicht gelistet für eine lokale BizTalk Server-Computer eine WMI-Klasse Managementscope Umfang mit:.Net - Remote-BizTalk-Server Überwachung mit WMI, wenn der SQL-Server auf einer anderen VM befindet

string strScope = @"\\.\root\MicrosoftBizTalkServer"; 

Aber wenn ich versuche, auf einem entfernten Rechner/Server verweist Ereignisse zu erfassen mit:

string strScope = string.Format(@"\\{0}\root\MicrosoftBizTalkServer", node.Address); 

ich erhalte eine ungerade WMI Fehler. Der typische Remote-Computer, auf den ich zu zeigen versuche, ist ein ähnlicher Windows-Server mit einem kleinen Unterschied, dass sein BizTalk-Server auf einen SQL-Server verweist, der sich auf einem anderen Server im Netzwerk befindet. Nachdem ich viel gegoogelt und gesucht hatte, stieß ich auf Informationen, die auf eine mögliche Fehlerursache hinwiesen, die das klassische "Double-Hop" Problem ist, das auftritt, wenn wir versuchen, auf den entfernten BizTalk Server zuzugreifen, wenn sich sein SQL Server auf einem anderen Rechner befindet .

in Visual Studio war ich nicht genug Informationen über den Fehler bekommen, dass ich ein Fenster integriertes Tool „wbemtest.exe“ versucht zu beheben, was nur los war eine lange Fehlermeldung aufzudecken wie folgt aus:

BizTalk Server kann nicht auf SQL Server zugreifen. Dies kann einen der folgenden Gründe haben: \ n1. Zugriffsberechtigungen wurden dem aktuellen Benutzer verweigert. Melden Sie sich entweder als Benutzer an, dem Berechtigungen für SQL erteilt wurden, und versuchen Sie es erneut, oder gewähren Sie dem aktuellen Benutzer die Berechtigung zum Zugriff auf SQL Server. \ n2. Der SQL Server existiert nicht oder es wurde ein ungültiger Datenbankname angegeben. Überprüfen Sie den Namen, der für den SQL Server und die Datenbank eingegeben wurde, um sicherzustellen, dass sie korrekt sind, wie bei der SQL Server-Installation angegeben. \ n3. Der SQL Server existiert, wird aber derzeit nicht ausgeführt. Verwenden Sie den Windows-Dienststeuerungs-Manager oder SQL Enterprise Manager, um SQL Server zu starten, und versuchen Sie es erneut. \ n4. Eine SQL-Datenbankdatei mit demselben Namen wie die angegebene Datenbank ist bereits im Microsoft SQL Server-Datenordner vorhanden. \ n \ nInterner Fehler von OLE DB-Provider: \ "Anmeldung für den Benutzer 'NT AUTHORITY \ ANONYMOUS-Anmeldung'. \"“

ich versucht habe, mit Firewall und DCOM-Einstellung unter Administrationsdienste spielen -> Komponentendienste aber keine Einstellung für mich arbeitet an Credentials mein Benutzers über „Identitätswechsel“ zu übergeben und abrufen zurück erhalten Standort/senden Informationen über den Hafen.

Bitte teilen Sie eine Problemumgehung/Lösung/Konfigurationseinstellungen, die tatsächlich dieses Problem behebt.

Antwort

1

Nach vieler Forschung und gründlicher Untersuchung wurde die Lösung über das Aktivieren/Konfigurieren der Kerberos-Authentifizierung für das Nicht-Domain-Administrator erreicht. Dienstkontobenutzer und an der Kommunikation beteiligte Maschinen, d. h.Client (Maschine sendet WMI-basierte Anfrage), BizTalk-Knoten (Maschine reagiert auf die WMI-basierte Anfrage) und SQL Server-Knoten (Maschine Hosting/Ausführen von SQL Server-Datenbank-Engine-Service und am wichtigsten Biztalk-Datenbanken, die MessageBox, Tracking, Management und SSO enthalten).

Dies wurde alles unter einer einzigen Domäne durchgeführt, und die Delegierung wurde für den Biztalk-Knoten und den SQL Server-Knoten zusammen mit dem verwendeten Dienstkonto eingerichtet.

DCOM-Berechtigungen wurden dem Dienstkonto für WMI erteilt, und DTC-Berechtigungen (Distributed Transaction Coordinator) wurden eingerichtet.

Entsprechende SPNs wurden generiert, und dem Dienstkonto, das die WMI-Anforderung im Delegierungsmodus initiiert, wurden entsprechende SQL Server-Berechtigungen erteilt.

bestätigt, dass die Kerberos wurde für das jeweilige Dienstkonto mit der folgenden SQL-Abfrage aktiviert:

wählen zu, net_transport, client_net_address, auth_scheme von sys.dm_exec_connections

0

Dies ist nur ein Doppelsprungproblem, das Problem, dem Sie gegenüberstehen, ist, weil Sie versuchen, einen Dienst auszuführen und auf den BizTalk-Server des Remote-Servers zuzugreifen, der versucht, sich an einem Remote-SQL-Server anzumelden. Ihre Anmeldeinformationen erreichen nur den BizTalk-Server, aber der BizTalk-Server übergibt Ihre Anmeldeinformationen nicht an einen anderen Server.

für Lösung zu diesem Link finden Similar Issue

+0

Ich habe bereits durch angegebenen Link gegangen aber ohne Erfolg. Alle 3 Optionen, die in der Antwort angezeigt werden, sind in meinem Szenario nicht anwendbar, da alle Rechte für die Benutzer in unserer Domäne für den Zugriff auf den Biztalk Server konfiguriert wurden. ExplorerOM Api erlaubt keine Überwachungsereignisse, sondern erlaubt Operationen wie Hinzufügen/Aktualisieren/Löschen Biztalk-Artefakte. –

+0

Haben Sie versucht, Ihren Windows-Dienst vom BizTalk-Server auszuführen, für den Sie Informationen abrufen möchten? –

+0

Ja, wir haben das ausprobiert und es funktionierte, aber das Design besteht darin, einen einzigen Anwendungsserver zu verwenden, der unseren Überwachungsdienst hostet, um BizTalk-Ereignisse von anderen Maschinen im Netzwerk zu erfassen. –

Verwandte Themen