Accedi a Microsoft
Accedi o crea un account.
Salve,
Select a different account.
Hai più account
Scegli l'account con cui vuoi accedere.

Sintomi

Si consideri il seguente scenario. Configurare molti 2014 di Microsoft SQL Server o Microsoft SQL Server 2012 gli agenti di replica per l'esecuzione su un server. Ad esempio, si configura più di 200 agenti di replica per l'esecuzione su un server. In questo scenario, è possono eseguire alcuni agenti di replica. Inoltre, il seguente messaggio di errore viene registrato nel Registro di sistema:

Errore dell'applicazione: L'applicazione non correttamente inizializzata (0xc0000142).
Fare clic su OK per terminare l'applicazione.

Causa

Questo problema si verifica perché viene quindi utilizzata per l'heap del desktop.

Soluzione alternativa

Per risolvere questo problema, utilizzare uno dei seguenti metodi:

  • Utilizzare account separati per gli agenti di replica creati per database diversi.

  • Utilizzare le impostazioni del Registro di sistema per aumentare la dimensione dell'heap del desktop.

    • È possibile modificare le seguenti voci del Registro di sistema:

      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management\SessionViewSize (aumentare il valore da 48 a 64, ad esempio)
      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows (aumentare il terzo valore SharedSection da 256 KB, ad esempio)

    • È necessario applicare le modifiche in entrambi i nodi.

    • È necessario salvare le chiavi del Registro di sistema prima della modifica e sarà necessario riavviare il server dopo avere applicato la modifica.

  • Modificare gli agenti di replica eseguano continuamente in esecuzione su base pianificata.

    • Ciò garantisce che gli agenti di replica eseguita solo quando è necessario e non a rimanere inattivi costantemente (perché questo sprecare risorse).

    • Istruzioni su come modificare la pianificazione dell'agente di replica sono disponibili in specificare le pianificazioni di sincronizzazione.

  • Modificare il percorso del server su cui sono in esecuzione gli agenti di replica.

    • È possibile valutare le coppie di editore-sottoscrittore e vedere se è possibile modificare le sottoscrizioni pull che l'agente di merge/distribuzione eseguito nel server di sottoscrizione invece che nel server di pubblicazione.

    • Ciò contribuisce a ridurre il numero di agenti simultanei che è necessario eseguire sul server.

Stato

Questo è il comportamento previsto.

Ulteriori informazioni

Ogni account che avvia il servizio Agente SQL Server corrisponde a un heap del desktop non interattivo. Inoltre, tutti gli agenti di replica che sono gestiti dal servizio Agente SQL Server condividono l'heap del desktop dell'account.

Come esaminare l'utilizzo dell'heap del desktop

È possibile utilizzare lo strumento Monitor di Heap Desktop per esaminare l'utilizzo dell'heap del desktop. Quindi, è possibile decidere se è necessario aumentare o ridurre la dimensione dell'heap del desktop non interattivo. In genere, è necessario aumentare le dimensioni.

Importante Lo strumento Monitor di Heap Desktop non funziona in Windows Server 2008 o versione successiva di Windows. Se si utilizza una di queste versioni di Windows, è possibile utilizzare LiveKD per ottenere i valori di heap del desktop. Per informazioni su come effettuare questa operazione, passare alla sezione successiva.

Per utilizzare lo strumento Monitor di Heap Desktop per esaminare l'utilizzo dell'heap del desktop, attenersi alla seguente procedura:

  1. Scaricare lo strumento Monitor di Heap Desktop.
    Il seguente file è disponibile per il download da Microsoft Download Center:

    Download Download del pacchetto DesktopHeapMonitor8_1_2925_0.exe.

  2. Installare lo strumento Monitor di Heap Desktop. A tale scopo, attenersi alla seguente procedura:

    1. Fare doppio clic sul pacchetto per estrarre i file.

    2. Fare clic su Start, scegliere Esegui, digitare cmd e quindi fare clic su OK.

    3. Al prompt dei comandi, eseguire il comando seguente:

      CD ExtractFolder\kktools\dheapmon8.1\piattaforma

      Nota: ExtractFolder è un segnaposto per la cartella in cui si estraggono i file. Piattaforma è un segnaposto per il nome della cartella che corrisponde alla piattaforma specifica.

    4. Eseguire il comando seguente:

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

  3. Caricare il driver. A tale scopo, eseguire il comando seguente:

    dheapmon.exe –l

  4. Eseguire lo strumento Monitor di Heap Desktop. A tale scopo, eseguire il comando seguente:

    dheapmon – s

L'output è simile al seguente:

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



Nell'output di questo elemento \Default Service-0x0-2461f$ rappresenta l'account che avvia il servizio Agente SQL Server. Tutti gli agenti di replica eseguito nel contesto di protezione dell'account. Se si eseguono più agenti di replica, si aumenterà l'utilizzo dell'heap del desktop. Se l'utilizzo dell'heap del desktop è più del 98% o al 99%, nessuna risorsa di heap del desktop può essere allocata. Pertanto, non è possibile avviare i nuovi agenti di replica.

In questo output, l'utilizzo dell'heap del desktop dell'account è 98,6%. In questa situazione, aumentare la dimensione dell'heap del desktop non interattivo aumentando il terzo valore SharedSectionilparametro. Dopo aver aumentato il terzo valore, il problema viene risolto dopo il riavvio del server. Quindi, è possibile utilizzare lo strumento Monitor di Heap Desktop da esaminare se il nuovo valore disponibile per tutti gli agenti di replica.

Nota: Per ulteriori informazioni sul parametro SharedSection , fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:

824422 imprevisto si verifica quando si eseguono molti processi su un computer che esegue SQL Server

È consigliabile che l'utilizzo di heap del desktop rimangono tra 80 e il 90 percento. Se si aumenta il terzo valore di SharedSectionparametro, si consiglia di aumentare il valore da 512 ogni volta.

Procedura per utilizzare LiveKD per enumerare i valori di heap del desktop

  1. Scaricare Debugging Tools for Windows come parte del SDK.

  2. Eseguire Sdksetup.exe e quindi installare strumenti di debug per Windows.

  3. Scarica LiveKD.

  4. Creare una cartella "C:\debugger".

  5. Copiare tutti i file dal percorso in cui è installato Strumenti di debug per C:\debugger. Il percorso predefinito è C:\Program Files (x86) \Windows Kits\8.0\Debuggers\x64.

  6. Estrarre LiveKD a C:\debugger.

  7. Aprire un prompt dei comandi con autorizzazioni elevate.

  8. Eseguire il comando seguente dal prompt dei comandi:livekd -y srv*http://msdl.microsoft.com/download/symbols

  9. Verrà visualizzato un output simile al seguente:

    V5.3 LiveKd - eseguire kd/windbg su un sistema di produzione
    Sysinternals - www.sysinternals.com
    Copyright (C) 2000-2012 Mark Russinovich e Ken Johnson

    Avvio di C:\Debugger\kd.exe:

    Microsoft (R) Windows versione Debugger 6.2.9200.20512 AMD64
    Copyright (c) Microsoft Corporation. Tutti i diritti riservati.

    Caricamento del File di Dump [C:\Windows\livekd.dmp]
    File di Dump completo kernel: Spazio di indirizzo completo è disponibile


    Commento: 'LiveKD sistema live view'
    Il percorso di ricerca di simboli: srv * http://msdl.microsoft.com/download/symbols
    Percorso di ricerca eseguibile è:
    Prodotto: Server, suite:
    Creato da:
    Nome del computer:
    Kernel base =
    Durata della sessione di debug:
    Tempi di attività:
    Caricamento dei simboli del Kernel
    ...............................................................
    ..............................................................
    Caricamento dei simboli di utente
    ...................................................
    Caricamento dell'elenco modulo scaricato
    ...... Impossibile enumerare i moduli scaricati in modalità utente, NTSTATUS 0xC0000147

  10. Eseguire ! dskheap di ricevere il seguente output:

    kd> !dskheap

    Errore: Caricamento del modulo completato ma simboli Impossibile caricare per LiveKdD.SYS
    Dim Heap Winstation\Desktop utilizzati Rate(%)

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

    WinSta0\Default 20480% 0
    WinSta0\Disconnect 96% 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: (KB 23840-7 desktop)
    ID di sessione: 0
    ============================================================

  11. Decodificare l'accesso crittografato nel modo seguente:

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

    2. Aprire wbemtest dal comando Esegui in Windows.

    3. Connettere lo spazio dei nomi "root\cimv2".

    4. Fare clic su Querye quindi digitare Selezionare * da win32_logonsession.

    5. Fare doppio clic sulla voce contenente 997.

    6. Selezionare UUIDnell'editor di oggetto, quindi fare clic su Associators per visualizzare il nome di accesso effettivo. Fare riferimento alla schermata riportata di seguito:


Considerazioni, se si utilizza il protocollo Desktop remoto

Se ci si connette al server utilizzando il protocollo Remote Desktop Protocol (RDP), assicurarsi di creare la sessione della console utilizzando l'opzione /console . Se non si utilizza l'opzione /console , è possibile visualizzare il desktop. Questo avviene perché l'account che avvia il servizio Agente SQL Server è associato con la sessione 0.

Il driver Win32k. sys alloca 48 MB di spazio indirizzo del buffer per l'heap del desktop. Assicurarsi che non è numero di computer desktop che utilizzano backup l'intero 48 MB di spazio indirizzo del buffer.

Se il server non è configurato come server terminal, tutti gli heap del desktop condividono il 48 MB di spazio indirizzo del buffer. Questo limita il numero di processi di servizio che è possibile eseguire sul server.

Se il server è configurato come server terminal, il driver Win32k. sys alloca 20 MB di spazio indirizzo del buffer per l'heap del desktop. Il driver Win32k. sys alloca anche 16 MB di spazio di sessione per il proprio pool di paging.

Differenze tra un server terminal e servizi terminal per l'heap del desktop

Un server terminal e servizi terminal sono diversi. Installare il componente Terminal Server in Installazione applicazioni. Dopo aver installato il componente Terminal Server, il server diventa un server terminal. Servizi terminal è un servizio che esiste nello snap-in servizi di Microsoft Management Console (MMC). Se si rimuove il componente Terminal Server dal server, i computer client possono ancora connettersi al server utilizzando RDP. Pertanto, si consiglia di rimuovere il componente Terminal Server per ottenere il 48 MB di spazio indirizzo del buffer per l'heap del desktop.

Influenzano sui processi di SQL Server 2005 l'heap del desktop

In SQL Server 2005, si dispone di diversi processi che vengono eseguiti con account diversi proxy. Per ogni account proxy, verrà allocata heap del desktop non interattivo per l'account proxy. Ad esempio, il terzo valore del parametro SharedSection è 512. Se si utilizza un account proxy per avviare un processo, l'heap del desktop 512 KB verrà allocata, anche se il processo stesso utilizza solo 10 KB di heap del desktop.

Nota: Altri processi che utilizzano lo stesso account proxy continuerà a utilizzare questo heap del desktop.

Questo può determinare in numero di computer desktop quando viene avviato il servizio Agente SQL Server. Pertanto, potrebbe utilizzabile di 48 MB di spazio indirizzo del buffer. Se si utilizza lo strumento Monitor di Heap Desktop per esaminare l'utilizzo dell'heap desk, si noterà che un desktop corrisponde all'account di un proxy utilizzato da un processo in esecuzione. Si consiglia di utilizzare un numero account proxy per evitare di raggiungere il limite di 48 MB.

Riferimenti

Per ulteriori informazioni sui valori del parametro SharedSection , fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:

184802 User32. dll o Kernel32. dll non riesce a inizializzare

Serve aiuto?

Amplia le tue competenze

Esplora i corsi di formazione >

Ottieni in anticipo le nuove caratteristiche

Partecipa a Microsoft Insider >

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×