Symptomen

Neem het volgende scenario. U configureren veel 2014 van Microsoft SQL Server of Microsoft SQL Server 2012 replicatie-agents worden uitgevoerd op een server. Zo kunt u meer dan 200 replicatieagenten uit te voeren op een server configureren. In dit scenario enkele kunnen niet worden uitgevoerd. Bovendien wordt het volgende foutbericht vastgelegd in het systeemlogboek:

Fout: Kan de toepassing niet juist initialiseren (0xc0000142).
Klik op OK om de toepassing te beëindigen.

Oorzaak

Dit probleem treedt op omdat de desktopheap is gebruikt.

Tijdelijke oplossing

Om dit probleem te omzeilen, gebruikt u een van de volgende methoden:

  • Gebruik afzonderlijke rekeningen voor de replicatie-agents voor verschillende databases gemaakt.

  • Registerinstellingen gebruiken om de desktop heapgrootte.

    • Kunt u de volgende registervermeldingen:

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\SessionViewSize (bijvoorbeeld de waarde van 48 tot 64, verhogen)
      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows (de derde waarde verhogen van de tekenreeks SharedSection door 256 kB bijvoorbeeld)

    • U moet de wijzigingen toepassen op beide knooppunten.

    • Hebt u de registersleutels voordat u de wijziging opslaat en u moet de server opnieuw te starten nadat u de wijziging toepassen.

  • De replicatie-agents wijzigen voortdurend worden uitgevoerd volgens een schema uitgevoerd.

    • Dit zorgt ervoor dat de replicatie-agents alleen wordt uitgevoerd wanneer dit nodig is, en niet op inactief blijft constant (omdat dit afval bronnen).

    • Instructies over het wijzigen van het schema van replicatie zijn beschikbaar op synchronisatieschema opgeven.

  • Wijzig de locatie van de server waarop de replicatie-agents worden uitgevoerd.

    • U kunt de publicatieserver-abonneeserver paren evalueren en Zie of kunt u sommige abonnees te trekken waardoor de verdeling/samenvoegagent uitvoeren op de abonnee in plaats van op de uitgever.

    • Dit vermindert het aantal van het aantal gelijktijdige agenten die op de server uitvoeren.

Status

Dit gedrag is inherent aan het ontwerp.

Meer informatie

Een niet-interactieve desktopheap overeenkomt met elke account waarmee de SQL Server Agent-service wordt gestart. Daarnaast delen alle replicatie-agents die worden beheerd door de SQL Server Agent-service de desktopheap van de rekening.

Het gebruik van de desktopheap inspecteren

De Desktop Heap Monitor tool kunt u het gebruik van de desktopheap onderzoeken. Vervolgens kunt u beslissen of u moet de grootte van de niet-interactieve desktopheap verhogen of verlagen. Meestal hebt u groter maken.

Belangrijk De Desktop Heap Monitor tool werkt niet in Windows Server 2008 of een hogere versie van Windows. Als u een van deze versies van Windows gebruikt, kunt u LiveKD desktopheap waarden ophalen. Ga naar de volgende sectie voor meer informatie over hoe u dit doet.

Ga als volgt te werk om de Desktop Heap Monitor gebruiken om te controleren van het gebruik van de desktopheap:

  1. De Desktop Heap Monitor tool downloaden.
    Het volgende bestand kan worden gedownload vanaf het Microsoft Download Center:

    Download Het pakket DesktopHeapMonitor8_1_2925_0.exe nu downloaden.

  2. Installeer het hulpprogramma Desktop Heap Monitor. Ga hiervoor als volgt te werk:

    1. Dubbelklik op het pakket als de bestanden wilt uitpakken.

    2. Klik op Start, klik op Uitvoeren, typ cmd en klik vervolgens op OK.

    3. Voer de volgende opdracht bij de opdrachtprompt:

      CD ExtractFolder\kktools\dheapmon8.1\Platform

      Opmerking ExtractFolder is een tijdelijke aanduiding voor de map waarin u de bestanden wilt uitpakken. Platform is een tijdelijke aanduiding voor de naam van de map die overeenkomt met het desbetreffende platform.

    4. Voer de volgende opdracht:

      dheapinst.exe -y srv * http://msdl.microsoft.com/download/symbols

  3. Het stuurprogramma niet laden. Voer hiertoe de volgende opdracht uit:

    dheapmon.exe –l

  4. De Desktop Heap Monitor tool uitvoeren. Voer hiertoe de volgende opdracht uit:

    dheapmon – s

De uitvoer er ongeveer als volgt:

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 de uitvoer van deze Service-0x0-2461f$ \Default aangeeft de account waarmee de SQL Server Agent-service wordt gestart. Alle replicatie-agents worden uitgevoerd binnen de beveiligingscontext van deze rekening. Als u meer replicatieagenten wordt uitgevoerd, wordt het gebruik van de desktopheap verhoogd. Als het gebruik van de desktopheap meer dan 98% of 99 procent is, kunnen geen desktopheap resources worden toegewezen. U kunt een nieuwe replicatie-agents daarom niet starten.

In deze uitvoer is het gebruik van de desktopheap van de account 98,6%. In dit geval van de niet-interactieve desktopheap met vergroot de derde waarde van de tekenreeks SharedSectionparameter. Nadat u de derde waarde verhoogt, wordt het probleem opgelost nadat u de server opnieuw hebt opgestart. Vervolgens kunt u de Desktop Heap het netwerkcontroleprogramma te onderzoeken als de nieuwe waarde is geschikt voor alle replicatie-agents.

Opmerking Voor meer informatie over de parameter tekenreeks SharedSection , klikt u op het volgende artikel in de Microsoft Knowledge Base:

824422 onverwacht gedrag optreedt wanneer u veel processen worden uitgevoerd op een computer waarop SQL Server wordt uitgevoerd

Wij raden aan dat het gebruik van de desktopheap blijven tussen 80 en 90 procent. Als u de derde waarde van de Sh-aredSectionverhogenparameter, wordt aangeraden dat u de waarde met 512 elke keer verhogen.

Stappen voor het gebruik van LiveKD om de desktopheap opsommingswaarden

  1. Debugging Tools for Windows als onderdeel van de SDKdownloaden.

  2. Uitvoeren van Sdksetup.exe en installeer Debugging Tools for Windows.

  3. LiveKD downloaden.

  4. Maak een map "C:\debugger".

  5. Kopieer alle bestanden uit de locatie waar u de foutopsporingsprogramma's geïnstalleerd op C:\debugger. Het standaardpad is C:\Program Files, (x86) \Windows Kits\8.0\Debuggers\x64.

  6. LiveKD om C:\debugger te pakken.

  7. Open een opdrachtprompt met machtigingen verhoogde.

  8. Voer de volgende opdracht uit vanaf de opdrachtprompt:livekd -y srv*http://msdl.microsoft.com/download/symbols

  9. Uitvoer de volgende strekking wordt weergegeven:

    LiveKd v5.3 - kd/windbg uitvoeren op een live systeem
    Sysinternals - www.sysinternals.com
    Copyright (C) 2000-2012 Mark Russinovich en Ken Johnson

    C:\Debugger\kd.exe te starten:

    Microsoft (R) Windows Debugger versie 6.2.9200.20512-AMD64
    Copyright (c) Microsoft Corporation. Alle rechten voorbehouden.

    Dumpbestand laden [C:\Windows\livekd.dmp]
    Volledige dumpbestand kernel: Volledige adresruimte beschikbaar is


    Opmerking: 'livesysteem live view'
    Zoekpad voor symbolen is: srv * http://msdl.microsoft.com/download/symbols
    Zoekpad voor uitvoerbare is:
    Product: Server, suite:
    Gemaakt door:
    Naam van de computer:
    Basis kernel =
    Sessieduur voor foutopsporing:
    Uptime van het systeem:
    Laden van de Kernel-symbolen
    ...............................................................
    ..............................................................
    Gebruiker symbolen laden
    ...................................................
    Ladingslijst module verwijderd
    ...... Kan geen gebruiker-modus niet geladen modules, NTSTATUS 0xC0000147 inventariseren

  10. Voer ! dskheap voor het ontvangen van de volgende output:

    kd> !dskheap

    Fout: Module laden voltooid maar symbolen kunnen niet worden geladen voor LiveKdD.SYS
    Grootte (kB) Winstation\Desktop-Heap gebruikt tarief (%)

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

    WinSta0\Default 20480 0%
    96 WinSta0\Disconnect 4%
    WinSta0\Winlogon 192 2%
    Service-0x0-3e7$ \Default 768 1%
    Service-0x0-3e4$ \Default 768 0%
    Service-0x0 -3e5$\Default 768 0%
    Service-0x0-10a75$ \Default 768 0%
    ------------------------------------------------------
    Totale Desktop: (23840 KB - 7 desktops)
    Sessie-ID: 0
    ============================================================

  11. Decoderen van de gecodeerde aanmelding als volgt:

    1. ' 3e5$ Service-0x0 -3e5$\Default ' -> 0x3e5 == 997.

    2. Wbemtest openen via de opdracht uitvoeren in Windows.

    3. Verbinding maken met de naamruimte 'root\cimv2'.

    4. Klik op Queryen typ vervolgens Selecteer * uit win32_logonsession.

    5. Dubbelklik op het item met 997.

    6. Selecteer UUIDin de object-editor en klik vervolgens op Associators om de werkelijke aanmeldingsnaam weer te geven. Raadpleeg de volgende schermafdruk:


Overwegingen als u Remote Desktop Protocol

Als u verbinding maakt met de server met behulp van Remote Desktop Protocol (RDP), moet u de console-sessie maken met behulp van de schakeloptie/console . Als u de schakeloptie/console niet gebruikt, kunt u het bureaublad niet zien. Dit is omdat de account die u de SQL Server Agent-service start gekoppeld aan een sessie 0 is.

Het stuurprogramma Win32k.sys wordt de desktopheap 48 MB buffer adresruimte toegewezen. Zorg ervoor dat er geen veel desktops die de hele 48 MB buffer adresruimte gebruiken.

Als de server niet is geconfigureerd als een terminal-server, delen alle desktop heaps de 48 MB buffer-adresruimte. Dit beperkt het aantal serviceprocessen die op de server kunnen worden uitgevoerd.

Als de server is geconfigureerd als een terminal-server, wijst het stuurprogramma Win32k.sys 20 MB buffer adresruimte voor de desktopheap. Het stuurprogramma Win32k.sys toegewezen ook 16 MB ruimte op de sessie voor eigen wisselbaar geheugen.

Verschillen tussen een terminal-server en terminal services met betrekking tot de desktopheap

Een terminal-server en terminal services zijn verschillend. U kunt het onderdeel Terminal Server installeren in software. Nadat u het onderdeel Terminal Server hebt geïnstalleerd, wordt de server een terminal-server. Terminal services is een service die voorkomt in de module Services Microsoft Management Console (MMC). Als u het onderdeel Terminal Server van de server verwijderen, kunnen client-computers nog steeds verbinding met de server via RDP. Overweeg daarom verwijderen van het onderdeel Terminal Server als u de 48 MB buffer adresruimte voor de desktopheap.

Hoe taken in SQL Server 2005 de desktopheap beïnvloeden

In SQL Server 2005, moet u wellicht verschillende taken die worden uitgevoerd onder een andere proxy-account. Voor elke rekening proxy wordt de niet-interactieve desktopheap voor de proxyaccount toegewezen. Bijvoorbeeld, is de derde waarde van de parameter tekenreeks SharedSection 512. Als u een proxy-account gebruikt om een taak te starten, wordt de desktopheap 512 KB toegewezen, zelfs als de taak zelf slechts 10 KB aan de desktop heap wordt.

Opmerking Andere functies die gebruikmaken van dezelfde proxyaccount, wordt deze desktopheap gebruikt.

Dit kan leiden tot veel desktops als de SQL Server Agent-service is gestart. De 48 MB buffer adresruimte kan men omhoog. Als u de Desktop Heap Monitor tool te onderzoeken van het gebruik van de heap Bureau, zult u zien dat één bureaublad komt overeen met een proxyaccount die wordt gebruikt door een actieve taak. Het is raadzaam u minder proxyaccounts gebruiken om te voorkomen dat de limiet van 48 MB bereikt.

Referenties

Voor meer informatie over de waarden van de parameter tekenreeks SharedSection klikt u op het volgende artikel in de Microsoft Knowledge Base:

184802 User32.dll of Kernel32.dll niet initialiseren

Meer hulp nodig?

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Microsoft insiders

Was deze informatie nuttig?

Hoe tevreden bent u met de vertaalkwaliteit?
Wat heeft uw ervaring beïnvloed?

Bedankt voor uw feedback.

×