Einige SQL Server-Replikations-Agents können nicht ausgeführt werden, wenn Sie viele Replikations-Agents auf einem Server konfigurieren

Gilt für: Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Workgroup EditionMicrosoft SQL Server 2005 Developer Edition

Problembeschreibung


Das folgende Szenario. Viele Microsoft SQL Server 2014 oder Microsoft SQL Server 2012 Replikations-Agents auf einem Server konfigurieren. Konfigurieren Sie beispielsweise mehr als 200 Replikations-Agents auf einem Server ausführen. In diesem Szenario können nicht einige Replikations-Agents ausgeführt. Darüber hinaus wird die folgende Fehlermeldung im Systemprotokoll protokolliert:
Anwendungsfehler: Die Anwendung konnte nicht richtig initialisiert werden (0xc0000142).
Klicken Sie auf OK, um die Anwendung zu beenden.

Ursache


Dieses Problem tritt auf, weil der Desktopheap aufgebraucht ist.

PROBLEMUMGEHUNG


Um dieses Problem zu umgehen, verwenden Sie eine der folgenden Methoden:
  • Verwenden Sie getrennte Konten für die Replikations-Agents für verschiedene Datenbanken erstellt.
  • Verwenden Sie Registrierungseinträge an um Desktopheap zu vergrößern.
    • Sie können die folgenden Registrierungseinträge ändern:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\SessionViewSize (z. B. erhöhen Sie den Wert von 48 64)
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows (erhöhen Sie den dritten SharedSection -Wert von 256 KB beispielsweise.)
    • Sie müssen die Änderungen auf beiden Knoten.
    • Die Registrierungsschlüssel vor der Änderung gespeichert und müssen Sie den Server neu starten, nachdem die Änderung zu übernehmen.
  • Ändern Sie die Replikations-Agents kontinuierlich auf einem Zeitplan ausgeführt.
    • Dadurch wird sichergestellt, dass die Replikations-Agents nur ausgeführt, wenn dies erforderlich ist, nicht im Leerlauf bleiben ständig (da dies Ressourcen verbraucht).
    • Anleitung zum Ändern des Replikationszeitplans Agent stehen unter Synchronisationszeitpläne angeben.
  • Ändern Sie den Server auf die Replikations-Agents ausgeführt werden.
    • Sie können die Verleger-Abonnent-Paare ausgewertet und, ob einige Abonnenten Ziehen ändern können, die machen den Verteilung/Merge-Agent auf dem Abonnenten auf dem Verleger ausgeführt.
    • Dies verringert die Anzahl der gleichzeitigen Agents, die auf dem Server ausgeführt.

Status


Dieses Verhalten ist entwurfsbedingt.

Weitere Informationen


Jedes Konto, das den SQL Server-Agent-Dienst startet entspricht einem nicht interaktiven desktop Heap. Darüber hinaus teilen alle Replikations-Agenten, die von der SQL Server-Agent-Dienst verwaltet den Desktopheap des Kontos.

Die Verwendung des Desktopheaps überprüfen

Das Desktop Heap Monitor-Tool können Sie die Verwendung des Desktopheaps. Dann können Sie entscheiden, ob Sie erhöhen oder verringern die Größe des Desktopheaps nicht interaktiven haben. Normalerweise müssen Sie vergrößern.

Wichtig Das Desktop Heap Monitor-Tool funktioniert nicht in Windows Server 2008 oder eine höhere Version von Windows. Wenn Sie eine dieser Versionen von Windows verwenden, können Sie LiveKD, Desktopheap Werte. Informationen hierzu finden Sie im nächsten Abschnitt.

Um das Desktop Heap Monitor-Tool verwenden, um die Verwendung des Desktopheaps, gehen Sie folgendermaßen vor:
  1. Das Desktop Heap Monitor-Tool herunterladen
    Die folgende Datei steht zum Download im Microsoft Download Center zur Verfügung:

    Download Paket DesktopHeapMonitor8_1_2925_0.exe jetzt herunterladen
  2. Das Desktop Heap Monitor-Tool zu installieren. Gehen Sie hierzu folgendermaßen vor:
    1. Doppelklicken Sie auf das Paket, um die Dateien zu extrahieren.
    2. Klicken Sie auf Start, klicken Sie auf Ausführen, geben Sie cmd ein, und klicken Sie auf OK.
    3. Führen Sie an der Befehlszeile den folgenden Befehl ein:

      CD ExtractFolder\kktools\dheapmon8.1\Plattform

      Hinweis ExtractFolder ist ein Platzhalter für den Ordner, in dem Sie die Dateien extrahieren. Plattform ist ein Platzhalter für den Namen des Ordners, der die spezifische Plattform entspricht.
    4. Führen Sie den folgenden Befehl ein:

      dheapinst.exe -y Srv * http://msdl.microsoft.com/download/symbols
  3. Laden Sie den Treiber. Führen Sie hierzu den folgenden Befehl aus:

    dheapmon.exe –l
  4. Das Desktop Heap Monitor-Tool ausführen. Führen Sie hierzu den folgenden Befehl aus:

    Dheapmon – s
Die Ausgabe ähnelt der folgenden:

Desktop Heap Information Monitor Tool (Version 8.1.2925.0)Copyright (c) Microsoft Corporation. All rights reserved.
-------------------------------------------------------------
Session ID: 0 Total Desktop: ( 7872 KB - 12 desktops)

WinStation\Desktop Heap Size(KB) Used Rate(%)
-------------------------------------------------------------
WinSta0\Default 3072 24.2
WinSta0\Disconnect 64 4.5
WinSta0\Winlogon 128 10.0
Service-0x0-3e7$\Default 512 40.9
Service-0x0-3e4$\Default 512 10.0
Service-0x0-3e5$\Default 512 6.9
SAWinSta\SADesktop 512 0.5
__X78B95_89_IW\__A8D9S1_42_ID 512 0.5
Service-0x0-1d419$\Default 512 2.4
Service-0x0-1da0b$\Default 512 2.4
Service-0x0-25c2e$\Default 512 13.5
Service-0x0-2461f$\Default 512 98.6
-------------------------------------------------------------



In dieser Ausgabe stellt Service-0 x 0-2461f$ \Default Element das Konto, das der SQL Server-Agent-Dienst gestartet wird. Alle Replikations-Agenten unter dem Sicherheitskontext dieses Kontos ausgeführt. Wenn mehr Replikations-Agents ausführen, wird die Verwendung des Desktopheaps erhöht. Ist die Verwendung des Desktopheaps mehr als 98 Prozent oder 99 Prozent, können keine Ressourcen Desktopheap zugewiesen. Daher können keine Replikations-Agenten gestartet werden.

In dieser Ausgabe wird die Verwendung des Desktopheaps des Kontos 98,6 Prozent. In diesem Fall vergrößern nicht interaktive Desktopheap durch erhöhen den dritten SharedSection-WertParameter. Nach dem dritten Wert erhöhen, wird nach dem Neustart des Servers das Problem behoben. Das Desktop Heap Monitor-Tool können Sie dann prüfen, ob der neue Wert die Replikations-Agenten ermöglicht.

Hinweis Weitere Informationen über den Parameter "SharedSection" klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:
824422 unerwartetes Verhalten tritt auf, wenn Sie viele Prozesse auf einem Computer ausführen, auf dem SQL Server ausgeführt wird

Wir empfehlen, die Verwendung Desktopheap 80 bis 90 Prozent. Erhöht den dritten Wert ShAredSectionParameter wird empfohlen, den Wert von 512 jedes Mal zu erhöhen.

Schritte zur LiveKD Desktopheap aufgelistet werden können

  1. Debugging Tools for Windows als Teil des SDKherunterladen
  2. Führen Sie Sdksetup.exe und Debugging Tools for Windows installieren.
  3. LiveKD herunterladen.
  4. Erstellen Sie einen Ordner "C:\debugger".
  5. Kopieren Sie alle Dateien, aus denen Sie C:\debugger die debugging Tools installiert. Der Standardpfad ist C:\Program Files (x86) \Windows Kits\8.0\Debuggers\x64.
  6. LiveKD, C:\debugger zu extrahieren.
  7. Öffnen Sie eine Befehlszeile, die erhöhten Berechtigungen.
  8. Führen Sie den folgenden Befehl in die Befehlszeile ein:
    livekd -y srv*http://msdl.microsoft.com/download/symbols 
  9. Erhalten Sie Ausgabe etwa folgenden Inhalts:
    LiveKd V5. 3 - kd/Windbg auf einem laufenden System ausführen
    Sysinternals - www.sysinternals.com
    Copyright 2000-2012 Mark Russinovich und Ken Johnson

    C:\Debugger\kd.exe wird gestartet:

    Microsoft (R) Windows Debugger-Version 6.2.9200.20512 AMD64
    Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.

    Dumpdatei laden [C:\Windows\livekd.dmp]
    Vollständige Speicherabbilddatei Kernel: Gesamter Adressraum ist verfügbar


    Kommentar: 'LiveKD Livesystem Ansicht'
    Suchpfad ist: Srv * http://msdl.microsoft.com/download/symbols
    Ausführbare Suchpfad ist:
    Produkt: Server: suite
    Erstellt von:
    Computername:
    Kernel base =
    Debug-Sitzung:
    Systembetriebszeit:
    Kernel-Symbole werden geladen
    ...............................................................
    ..............................................................
    Benutzer Symbole laden
    ...................................................
    Modul entladen Ladeliste
    ...... Nicht im Benutzermodus entladen Module NTSTATUS 0xC0000147 aufgelistet werden.
  10. Ausführen ! Dskheap die folgende Ausgabe erhalten:
    kd> !dskheap

    Fehler: Laden abgeschlossen, aber Symbole konnte nicht für die LiveKdD.SYS geladen werden
    Verwendet Winstation\Desktop-Heap-Größe (KB) Rate(%)

    ------------------------------------------------------------

    WinSta0\Default 20480 0 %
    WinSta0\Disconnect 96 4 %
    WinSta0\Winlogon 192 2 %
    Service-0 x 0-3e7$ \Default 768 1 %
    Service-0 x 0-3e4$ \Default 768 0 %
    Service-0 x 0 -3e5$\Default 768 0 %
    Service-0 x 0-10a75$ \Default 768 0 %
    ------------------------------------------------------
    Gesamte Desktop: (23840 KB - 7 Desktops)
    Sitzung-ID: 0
    ============================================================
  11. Decodiert verschlüsselte Anmeldung folgendermaßen:
    1. "3e5$ Service-0 x 0 -3e5$\Default" -> 0x3e5 == 997.
    2. Öffnen Sie Wbemtest Befehl in Windows.
    3. Verbinden Sie mit dem Namespace "root\cimv2".
    4. Klicken Sie auf Abfrage, und geben Sie Wählen Sie * aus win32_logonsession.
    5. Doppelklicken Sie auf den Eintrag, der 997enthält.
    6. Wählen Sie UUIDim Objekteditor Associators zeigen den tatsächlichen Namen klicken. Finden Sie in der folgenden Abbildung:

      This screen shot shows the previously mentioned steps.

Aspekte der Remote Desktop-Protokoll verwenden

Wenn Sie mit dem Remote Desktop Protocol (RDP) mit dem Server verbinden, stellen Sie sicher, dass die Konsole-Sitzung erstellen mithilfe des Schalters/Console . Wenn Sie nicht/Console Switch verwenden, nicht den Desktop angezeigt. Ist das Konto, das den SQL Server-Agent-Dienst startet Sitzung 0 zugeordnet ist.

Treiber Win32k.sys reserviert 48 MB Pufferspeicher Adresse für Desktopheaps. Stellen Sie sicher, dass Sie nicht viele Desktops verfügen, die gesamte 48 MB Pufferspeicher Adresse verwenden.

Wenn der Server nicht als Terminalserver konfiguriert, teilen alle Desktopheaps 48 MB Pufferspeicher Adresse. Dies begrenzt die Anzahl der Serviceprozesse, die auf dem Server ausführen können.

Wenn der Server als Terminalserver konfiguriert ist, weist Win32k.sys Treiber 20 MB Pufferspeicher Adresse für Desktopheaps. Win32k.sys-Treiber weist 16 MB freien Sitzung auch für eigene Auslagerungsspeicher.

Unterschiede zwischen einem Terminalserver und Terminaldienste für Desktopheaps

Ein Terminalserver und Terminaldienste unterscheiden. Sie installieren die Komponente Terminalserver in Software. Nach der Installation der Terminalserverkomponente wird der Server einen Terminalserver. Terminaldienste ist ein Dienst, der im Snap-In Dienste Microsoft Management Console (MMC) vorhanden ist. Wenn Sie Terminalserver-Komponente vom Server entfernen, können Clientcomputer weiterhin über RDP zum Server verbinden. Deshalb die Terminalserverkomponente 48 MB Pufferspeicher für Desktopheaps Adresse zu entfernen.

Wie Aufträge in SQL Server 2005 den Desktopheap auswirken

In SQL Server 2005 müssen Sie verschiedene Aufgaben, die unter verschiedenen Proxykonten ausgeführt. Für jedes Proxykonto wird nicht interaktive Desktopheap für das Proxykonto zugeordnet. Der dritte Wert des Parameters "SharedSection" ist z. B. 512. Verwenden Sie ein Proxykonto zum Starten eines Auftrags, wird Desktopheaps 512 KB zugeordnet werden, auch wenn der Auftrag selbst nur 10 KB des Desktopheaps verwendet.

Hinweis Andere Aufträge mit der gleichen Proxykonto werden diesem Desktopheap weiterhin verwendet werden.

Dies viele Desktops möglicherweise beim SQL Server-Agent-Dienst gestartet wird. Daher können 48 MB Pufferspeicher Adresse verwendet werden. Wenn Sie Verwendung des Heaps Desk Desktop Heap Monitor-Tool verwenden, sehen Sie ein Proxykonto, einem Desktop entspricht, mit dem ein Auftrag ausgeführt. Wir empfehlen weniger Proxykonten verwenden Sie 48 MB-Grenzwert erreicht.

Referenzen


Weitere Informationen zu den Werten der Parameter "SharedSection" klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:
184802 "User32.dll" oder "Kernel32.dll" wird nicht initialisiert