Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen bei der Behandlung von Problemen, die bestimmte Data Warehouse-Aufträge in System Center Service Manager hängen.
Originalproduktversion: System Center 2016 Service Manager, System Center 2012 R2 Service Manager, System Center 2012 Service Manager
Ursprüngliche KB-Nummer: 4040022
Zusammenfassung
Dieser Artikel hilft Ihnen bei der Problembehandlung, wenn die folgenden Data Warehouse-Aufträge hängen geblieben sind:
- MPSyncJob
- DWMaintenance
- Extrahieren von Aufträgen für die Dienst-Manager-Verwaltungsgruppe und die Data Warehouse-Verwaltungsgruppe
- Transform.Common
- Load.Common
- Load.CMDWDataMart
- Load.OMDWDataMart
Symptome von hängenen Data Warehouse-Aufträgen umfassen die folgenden:
- Der Auftrag hat den Status " Ausführen" in der Dienst-Manager-Konsole oder in den PowerShell-Ergebnissen. Der Auftrag wird jedoch lange ausgeführt (z. B. mehr als mehrere Stunden).
- Die Start- und Endzeit des Auftrags sind inkonsistent.
- In Ihren Berichten werden keine Daten oder neue Daten angezeigt. Dies kann darauf hindeuten, dass Extraktions-, Transformations- und Load-Aufträge (ETL) nicht ausgeführt werden.
Probleme, die in diesem Artikel nicht behandelt werden:
- Fehler, die mit einzelnen Modulen auftreten
Transform.Common
Fehler, die auftreten, wenn ein bestimmtes Modul fehlschlägt oder ein Zeitüberschreitung auftritt- Management Pack-Synchronisierungsfehler
- Probleme bei der Cubeverarbeitung
- Probleme mit der Datenintegrität
Grundlegendes zur Staging- und Konfigurationsdatenbank
Die DWStagingAndConfig
Datenbank ist die Datenbank, die bei der Problembehandlung verwendet werden soll. Hier ist eine Liste der Tabellen in der Datenbank:
Infra.Process
Speichert Informationen zu den Aufträgen, z
ProcessName
. B. undProcessId
.Infra.ProcessModule
Speichert Informationen zu den
ProcessModules
, zVertexName
. B. (Name desProcessModule
),ProcessModuleId
undModuleConfig
.Infra.ProcessCategory
Speichert Informationen zu den Prozesskategorien, z
ProcessCategoryName
. B. undIsEnabled
. Der Wert mussIsEnabled
1 sein, damit jeder Prozess in dieser Kategorie ausgeführt werden kann.Infra.Batch
Speichert Informationen zu allen Batches, z
BatchId
. B. ,BatchStartTime
undBatchEndTime
.Infra.WorkItem
Speichert Informationen zu allen Stapeln
WorkItems
. Sie können alle Fehler für einen BatchWorkItems
in dieser Tabelle sehen.Infra.Status
Speichert Informationen zu den jeweiligen
StatusIds
. Hier sind die daten, die aus derInfra.Status
Tabelle zurückgegeben werden.StatusId StatusName Beschreibung 1 Erfolgreich Erfolgreich 2 Fehler Fehler 3 Nicht gestartet Nicht gestartet 4 Wird ausgeführt Wird ausgeführt 5 Beendet Beendet 6 Abgeschlossen Abgeschlossen 7 Wartet Wartet Der häufigste Grund für einen hängen gebliebenen Data Warehouse-Auftrag besteht darin, dass der Data Warehouse-Verwaltungsserver die Kommunikation mit Microsoft SQL Server verloren hat. Es tritt auf, wenn SQL Server ohne Wissen des Dienst-Managers aktualisiert wurde. Sie können das Operations Manager-Ereignisprotokoll auf dem Data Warehouse-Verwaltungsserver überprüfen, um festzustellen, ob es sich um den Grund handelt.
Aus anderen Gründen können Sie Windows PowerShell-Cmdlets und SQL Server-Anweisungen verwenden, um Probleme zu beheben. Im folgenden Lösungsprozess werden alle PowerShell-Cmdlets auf dem Data Warehouse-Verwaltungsserver ausgeführt, und die SQL Server-Anweisungen werden für die DWStagingAndConfig
Datenbank ausgeführt.
Vorbereitung
Starten Sie SQL Server Management Studio, und stellen Sie sicher, dass Sie eine Verbindung mit dem SQL Server herstellen können, der die
DWStagingAndConfig
Datenbank hostt.Um die SQL Server-Instanz zu finden, überprüfen Sie die Registrierung, oder geben Sie den folgenden Befehl ein:
$sql = Get-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\System Center\2010\Common\Database";$sql.StagingSQLInstance
Verwenden Sie den folgenden Befehl, um die Liste der Aufträge und ihren aktuellen Status abzurufen:
$jobs = Get-SCDWJob;$jobs | ft -autosize
Wenn keine Ergebnisse zurückgegeben werden oder ein Fehler auftritt, verwenden Sie den folgenden Befehl, um das Data Warehouse-Cmdlets-Modul zu laden, und führen Sie dann den vorherigen Befehl erneut aus:
import-module (((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\System Center\2010\Common\Setup").InstallDirectory)+ "Microsoft.EnterpriseManagement.Warehouse.Cmdlets.psd1")
Alle Auftragspläne deaktivieren
Verwenden Sie den folgenden Befehl, um alle Auftragspläne zu deaktivieren und zu überprüfen, ob alle Zeitpläne deaktiviert sind (ScheduleEnabled
=False):
foreach($job in $jobs){Disable-SCDWJobSchedule -jobname $job.name};Get-SCDWJobSchedule | ft -autosize
Warten, bis alle ausgeführten Aufträge abgeschlossen sind
Führen Sie den folgenden Befehl wiederholt aus, bis alle aufträge, die ausgeführt werden:
Get-SCDWJob
Wenn bestimmte Aufträge scheinbar für immer ausgeführt werden, verwenden Sie die nächsten Schritte, um die Aufträge zurückzusetzen.
Notiz
Um sicherzustellen, dass Sie keinen aktuell ausgeführten Auftrag beeinträchtigen, lassen Sie alle Aufträge fertig stellen, bevor Sie zum nächsten Schritt gehen, es sei denn, die Aufträge scheinen für immer zu fixieren oder auszuführen.
Beenden des HealthService-Diensts
Verwenden Sie Service Control Manager (Services.msc), um den Microsoft Monitoring Agent-Dienst (HealthService.exe) zu beenden.
Sie können auch den
Net Stop HealthService
Befehl oder dasStop-Service
Cmdlet verwenden, um den Dienst zu beenden.Benennen Sie den Ordner "Integritätsdienst Status" um.
Verwenden Sie den folgenden Befehl, um den Ordnerspeicherort zu finden:
$dir = Get-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\System Center\2010\Common\Setup";$dir.installdirectory
Festlegen des Status aller Module der hängen gebliebenen Aufträge auf "Abgeschlossen" (StatusId = 6)
Suchen Sie den
BatchId
hängen gebliebenen Auftrag im Ergebnis desGet-SCDWJob
Cmdlets.Hier ist eine Beispielausgabe:
BatchId Name Status CategoryName StartTime EndTime IsEnabled 8806 Load.Common Wird ausgeführt Einlesen 12.02.2016 7:44:00 Uhr Richtig Führen Sie in SQL Server Management Studio die folgenden Anweisungen aus:
UPDATE Infra.WorkItem SET StatusId = 6 WHERE BatchId = '<BatchId>' UPDATE Infra.Batch SET StatusId = 6 WHERE BatchId = '<BatchId>'
Führen
Get-SCDWJob
Sie den Status erneut aus.
Erstellen eines neuen Batches für den hängen gebliebenen Auftrag
Führen Sie die folgende SQL Server-Anweisung aus:
EXEC Infra.CreateBatch '<JobName>'
Führen Sie den Vorgang erneut aus
Get-SCDWJob
, stellen Sie sicher, dass der Auftrag über einen neuenBatchId
Auftrag verfügt und der Status "Nicht gestartet" lautet.
Alle Sperren freigeben
Führen Sie die folgende SQL Server-Anweisung aus, um die Sperren abzurufen:
SELECT * FROM LockDetails
Wenn das Ergebnis nicht leer ist, führen Sie die folgende Anweisung aus, um die Sperre freizugeben:
EXEC dbo.ReleaseLock @ResourceName = '<ResourceName>', @LockRequester = '<LockRequester>'
Wiederholen Sie die Schritte 1 und 2, bis alle Sperren losgelassen werden.
Überprüfen des Auftragsstatus
Führen Sie den folgenden Befehl aus:
Get-SCDWJob
Stellen Sie sicher, dass die Ausgabe ähnlich dem folgenden Screenshot angezeigt wird:
Stellen Sie sicher, dass der betroffene Auftrag über eine neue Batch-ID verfügt und alle Aufträge den Wert "True " haben
IsEnabled
. Wenn für einen Auftrag "False"IsEnabled
angezeigt wird, führen Sie die folgende SQL Server-Anweisung aus:UPDATE infra.ProcessCategory SET IsEnabled = 1 WHERE IsEnabled = 0
Testen, ob der betroffene Auftrag ordnungsgemäß ausgeführt wird
Verwenden Sie den folgenden Befehl, um den betroffenen Auftrag zu starten:
Start-SCDWJob -jobname \<JobName>
Wenn der Auftrag erfolgreich abgeschlossen wurde, fahren Sie mit dem nächsten Schritt fort.
Alle Auftragspläne aktivieren und den HealthService-Dienst neu starten
Verwenden Sie den folgenden Befehl, um alle Auftragspläne zu aktivieren und zu überprüfen, ob alle Zeitpläne aktiviert sind (ScheduleEnabled=True):
foreach($job in $jobs){Enable-SCDWJobSchedule -jobname $job.name};Get-SCDWJobSchedule | ft -autosize
Starten Sie den Microsoft Monitoring Agent-Dienst (HealthService.exe).
Überprüfen des Auftragsstatus
Führen Sie den folgenden Befehl aus:
Get-SCDWJob
Die Ausgabe sollte dem folgenden Screenshot ähneln:
Notiz
Möglicherweise sehen Sie, dass einige Prozesskategorien deaktiviert sind. Dies ist normal, da
DWMaintenance
prozesse für die Synchronisierung deaktiviert werdenMPSyncJob
können.Überwachen Sie die Aufträge für eine Weile, um sicherzustellen, dass sie ordnungsgemäß ausgeführt werden.
Überprüfen Sie, ob das Aufgetretene nicht mehr auftritt. Bei Berichten von Problemen kann es mehrere Stunden dauern, bis der Bericht mit den aktuellen Ergebnissen aktualisiert wird.