Niektórzy agenci replikacji programu SQL Server nie można uruchomić podczas konfigurowania wielu agentów replikacji do uruchamiania na serwerze

Objawy

Rozważmy następujący scenariusz. Konfigurowanie wielu agentów replikacji 2014 Microsoft SQL Server lub Microsoft SQL Server 2012 do uruchamiania na serwerze. Na przykład można skonfigurować więcej niż 200 agentów replikacji do uruchamiania na serwerze. W tym scenariuszu nie można uruchomić niektórych czynników replikacji. Ponadto następujący komunikat o błędzie jest rejestrowany w dzienniku systemu:

Błąd aplikacji: Aplikacja nie została właściwie zainicjowana (0xc0000142).
Kliknij przycisk OK, aby zakończyć tę aplikację.

Przyczyna

Ten problem występuje, ponieważ jest wykorzystane sterty pulpitu.

Obejście problemu

Aby obejść ten problem, użyj jednej z następujących metod:

  • Użyj osobnych kont dla agentów replikacji utworzone dla różnych baz danych.

  • Aby zwiększyć rozmiar sterty pulpitu za pomocą ustawień rejestru.

    • Można zmienić następujące wpisy rejestru:

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\SessionViewSize (na przykład zwiększenie wartości od 48 do 64)
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows (wzrost trzecia wartość SharedSection przez 256 kilobajtów, na przykład)

    • Należy zastosować zmiany na obu węzłach.

    • Musisz zapisać klucze rejestru przed zmianą, i należy ponownie uruchomić serwer, po zastosowaniu zmian.

  • Zmień agenci replikacji z systemem stale uruchomiona na podstawie harmonogramu.

    • Daje to pewność, że agenci replikacji uruchamiane tylko wtedy, gdy jest to konieczne i nie pozostawać bezczynny stale (ponieważ odpady zasobów).

    • Instrukcje na temat sposobu zmiany harmonogramu agenta replikacji są dostępne w Określ harmonogramy synchronizacji.

  • Zmiany lokalizacji serwera, na którym są uruchomione agentów replikacji.

    • Można oceniać pary wydawca subskrybenta i zobacz, czy możesz zmienić niektórych subskrybentów do ciągnięcia, które sprawią, że agent dystrybucji/merge uruchomić na subskrybenta zamiast w programie Publisher.

    • Pomaga zmniejszyć liczbę równoczesnych agentów, które trzeba uruchomić na serwerze.

Stan

To zachowanie jest zgodne z projektem.

Więcej informacji

Każde konto, który uruchamia usługę SQL Server Agent odpowiada jeden nieinterakcyjnym sterty pulpitu. Ponadto Wszyscy agenci replikacji, które są zarządzane przez usługę SQL Server Agent Podziel sterty pulpitu konta.

Jak sprawdzać stosowania sterty pulpitu

Narzędzie Monitor sterty pulpitu do zbadania stosowania sterty pulpitu. Następnie można zdecydować, czy trzeba zwiększyć lub zmniejszyć rozmiar nieinterakcyjnym sterty pulpitu. Zazwyczaj trzeba zwiększyć rozmiar.

Ważne Narzędzia Monitor sterty pulpitu nie działa w systemie Windows Server 2008 lub nowszej wersji systemu Windows. Jeśli używasz jednej z tych wersji systemu Windows, można użyć LiveKD uzyskanie wartości sterty pulpitu. Aby uzyskać informacje o tym, jak to zrobić, przejdź do następnej sekcji.

Aby użyć narzędzia Monitor sterty pulpitu zbadanie stosowania sterty pulpitu, wykonaj następujące kroki:

  1. Pobierz narzędzie Monitor sterty pulpitu.
    Następujący plik jest dostępny do pobrania z witryny Centrum pobierania firmy Microsoft:

    Download Pobierz teraz pakiet DesktopHeapMonitor8_1_2925_0.exe.

  2. Zainstaluj narzędzie Monitor sterty pulpitu. Aby to zrobić, wykonaj następujące kroki:

    1. Kliknij dwukrotnie pakiet, aby rozpakować pliki.

    2. Kliknij przycisk Start, kliknij polecenie Uruchom, wpisz polecenie cmd, a następnie kliknij OK.

    3. W wierszu polecenia Uruchom następujące polecenie:

      CD ExtractFolder\kktools\dheapmon8.1\platformy

      Uwaga: ExtractFolder jest symbolem zastępczym dla folderu, gdzie można wyodrębnić pliki. Platforma jest symbolem zastępczym dla nazwy folderu, który odpowiada określonej platformy.

    4. Uruchom następujące polecenie:

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

  3. Załaduj sterownik. Aby to zrobić, uruchom następujące polecenie:

    dheapmon.exe –l

  4. Uruchom narzędzie Monitor sterty pulpitu. Aby to zrobić, uruchom następujące polecenie:

    dheapmon – s

Dane wyjściowe podobne do następujących:

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
-------------------------------------------------------------



W tym dane wyjściowe Service-0x0-2461f$ \Default element reprezentuje konto, który uruchamia usługę SQL Server Agent. Wszyscy agenci replikacji uruchamiane w kontekście zabezpieczeń tego konta. Jeśli uruchomisz więcej agentów replikacji, zwiększy się stosowania sterty pulpitu. W przypadku więcej niż 98% lub 99 procent stosowania sterty pulpitu można przydzielić żadne zasoby sterty pulpitu. W związku z tym nie można uruchomić żadnych nowych agentów replikacji.

W wyniku użycie sterty pulpitu konta jest procent 98,6. W tej sytuacji, należy zwiększyć rozmiar nieinterakcyjnym sterty pulpitu poprzez zwiększenie trzecia wartość SharedSectionparametru. Po zwiększamy wartość trzeciego problem zostanie rozwiązany po ponownym uruchomieniu serwera. Następnie można użyć narzędzia Monitor sterty pulpitu, aby zbadać, czy nowa wartość jest przystosowana do wszystkich agentów replikacji.

Uwaga: Aby uzyskać więcej informacji na temat parametru SharedSection , kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

824422 nieoczekiwane zachowanie występuje podczas uruchamiania wielu procesów na komputerze, na którym działa program SQL Server

Zaleca się, że stosowanie sterty pulpitu pozostają między 80% i 90%. Jeśli zwiększysz trzecia wartość SharedSectionparametru, firma Microsoft zaleca zwiększenie wartości przez 512 zawsze.

Kroki, aby użyć LiveKD do wyliczenia wartości sterty pulpitu

  1. Pobierz Debugging Tools for Windows, jako część zestawu SDK.

  2. Uruchom Sdksetup.exe, a następnie zainstaluj narzędzia do debugowania dla systemu Windows.

  3. Pobierz LiveKD.

  4. Utwórz folder "C:\debugger".

  5. Skopiuj wszystkie pliki z lokalizacji, w którym zainstalowano narzędzia debugowania do C:\debugger. Domyślna ścieżka to C:\Program Files (x86) \Windows Kits\8.0\Debuggers\x64.

  6. Wyciąg LiveKD do C:\debugger.

  7. Otwórz wiersz polecenia z podwyższonym poziomem uprawnień.

  8. Uruchom następujące polecenie z wiersza polecenia:livekd -y srv*http://msdl.microsoft.com/download/symbols

  9. Powinien otrzymać dane wyjściowe podobne do następujących:

    LiveKd v5.3 - wykonanie kd/windbg w systemie aktywnym
    Sysinternals - www.sysinternals.com
    Copyright (C) 2000-2012 Markiem Russinovichem i Kenowi Johnson

    Uruchamianie C:\Debugger\kd.exe:

    Microsoft (R) systemu Windows w wersji z debugerem 6.2.9200.20512 AMD64
    Copyright (c) Microsoft Corporation. Wszelkie prawa zastrzeżone.

    Trwa ładowanie pliku zrzutu [C:\Windows\livekd.dmp]
    Pełny plik zrzutu jądra: Pełny adres miejsca jest dostępna


    Komentarz: "widoku na żywo systemu LiveKD"
    Jest ścieżka wyszukiwania symbolu: srv * http://msdl.microsoft.com/download/symbols
    Ścieżka wyszukiwania pliku wykonywalnego jest:
    Produkt: Serwer, suite:
    Zbudowany przez:
    Nazwa komputera:
    Jądra podstawy =
    Program Debug: polecenie czas sesji:
    Czas pracy systemu:
    Trwa ładowanie symboli jądra
    ...............................................................
    ..............................................................
    Trwa ładowanie symboli użytkownika
    ...................................................
    Wykaz załadunkowy rozładowane modułu
    ...... Nie można wyliczyć modułów trybu użytkownika rozładowane, NTSTATUS 0xC0000147

  10. Uruchom ! dskheap do odbierania wyjściowego następujące:

    kd> !dskheap

    Błąd: Module zakończeniu ładowania, ale symbole nie mogą być załadowane do LiveKdD.SYS
    Rozmiar (KB) Winstation\Desktop sterty używane stopa (%)

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

    WinSta0\Default 20480 0%
    WinSta0\Disconnect 96 4%
    WinSta0\Winlogon 192 2%
    Usługi-0x0-3e7$ \Default 768 1%
    Usługi-0x0-3e4$ \Default 768 0%
    Usługi-0x0 -3e5$\Default 768 0%
    Usługi-0x0-10a75$ \Default 768 0%
    ------------------------------------------------------
    Pulpit całkowita: (KB 23840-7 komputery stacjonarne)
    Identyfikator sesji: 0
    ============================================================

  11. Dekodować zaszyfrowane logowania w następujący sposób:

    1. "Usługa$ 3e5-0x0 -3e5$\Default" -> 0x3e5 == 997.

    2. Otwórz narzędzie wbemtest z polecenia Uruchom w systemie Windows.

    3. Połączyć się z obszarem nazw "root\cimv2".

    4. Kliknij kwerendę, a następnie wpisz Wybierz * z win32_logonsession.

    5. Kliknij dwukrotnie wpis, który zawiera 997.

    6. Wybierz Identyfikator UUIDw Edytorze obiektów i następnie kliknij Associators , aby wyświetlić nazwę logowania. Można znaleźć na poniższej ilustracji:


Uwagi dotyczące użycia protokołu pulpitu zdalnego

Jeśli łączysz się z serwerem przy użyciu protokołu pulpitu zdalnego (RDP), upewnij się, tworzenie sesji konsoli przy użyciu przełącznika/Console . Jeśli nie używasz przełącznika/Console , nie widzisz tego pulpitu. Jest tak, ponieważ konto, który uruchamia usługę SQL Server Agent jest skojarzony z sesją 0.

Sterownik Win32k.sys pakietom 48 MB przestrzeni adresowej buforu sterty pulpitu. Upewnij się, że nie masz wiele stacji roboczych, które zajmują cały 48 MB przestrzeni adresowej buforu.

Jeśli serwer nie jest skonfigurowany jako serwer terminali, wszystkich stert pulpitu udostępnić 48 MB przestrzeni adresowej buforu. Ogranicza liczbę procesów usługi, które można uruchomić na serwerze.

Jeśli serwer jest skonfigurowany jako serwer terminali, Win32k.sys sterownik pakietom 20 MB miejsca na adres buforu sterty pulpitu. Sterownik Win32k.sys przydziela również 16 MB miejsca na sesji dla własnej puli stronicowanej.

Różnice pomiędzy serwerem terminali i usług terminalowych w odniesieniu do sterty pulpitu

Serwer terminali i usługi terminalowe są różne. Zainstaluj składnik Serwer terminali w aplecie Dodaj lub usuń programy. Po zainstalowaniu składnika serwera terminali, serwer stanie się serwerem terminali. Usługi terminalowe to usługa, która istnieje w przystawce usługi Microsoft Management Console (MMC). Jeśli usuniesz składnik Serwer terminali z serwera, można nadal się połączyć komputery klienckie z serwerem przy użyciu protokołu RDP. W związku z tym należy rozważyć usunięcie składnik Serwer terminali w celu uzyskania 48 MB przestrzeni adresowej buforu sterty pulpitu.

Wpływ sterty pulpitu zadań w programie SQL Server 2005

W programie SQL Server 2005 może mieć różne zadania uruchamiane w ramach kont innego serwera proxy. Dla każdego konta serwera proxy będą przydzielane nieinterakcyjnym sterty pulpitu dla tego konta użytkownika serwera proxy. Na przykład wartość trzeciego parametru SharedSection jest 512. Jeśli korzystasz z konta serwera proxy do rozpoczęcia zadania sterty pulpitu 512 KB zostanie przydzielone, nawet jeśli zadanie sam używa tylko 10 KB sterty pulpitu.

Uwaga Inne zadania, które używają tego samego konta serwera proxy będą nadal używać tej sterty pulpitu.

Może to spowodować wiele pulpitów podczas uruchamiania usługi SQL Server Agent. W związku z tym mogły zostać zużyte 48 MB przestrzeni adresowej buforu. Jeśli używasz narzędzia Monitor sterty pulpitu do zbadania stosowania sterty biurko, można zauważyć, że jeden pulpit odpowiada jeden serwer proxy konta, które jest używane przez uruchomione zadanie. Zaleca się użyć mniejszej liczby kont serwera proxy Aby uniknąć przekroczeniem limitu 48 MB.

Powiązane artykuły

Aby uzyskać więcej informacji dotyczących wartości parametru SharedSection kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

184802 User32.dll lub Kernel32.dll nie można zainicjować

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Dziękujemy za opinię!

Dziękujemy za opinię! Wygląda na to, że połączenie Cię z jednym z naszych agentów pomocy technicznej pakietu Office może być pomocne.

×