Algunos agentes de replicación de SQL Server no se pueden ejecutar al configurar muchos agentes de replicación para que se ejecuten en un servidor.
Artículo
Este artículo le ayuda a solucionar el problema en el que algunos agentes de replicación no se pueden ejecutar al configurar muchos agentes de replicación de SQL Server para que se ejecuten en un servidor.
Versión original del producto: SQL Server 2014, SQL Server 2012 Número de KB original: 949296
Síntomas
Considere el caso siguiente:
Puede configurar muchos agentes de replicación de Microsoft SQL Server 2014 o SQL Server 2012 para que se ejecuten en un servidor. Por ejemplo, configurará más de 200 agentes de replicación para que se ejecuten en un servidor.
En este escenario, algunos agentes de replicación no se pueden ejecutar. Además, el siguiente mensaje de error se registra en el registro del sistema:
Error de aplicación: la aplicación no se pudo inicializar correctamente (0xc0000142).
Haga clic en Aceptar para finalizar la aplicación.
Causa
Este problema se produce porque el montón de escritorio se usa.
Solución alternativa
Para solucionar este problema, use uno de los métodos siguientes:
Uso de cuentas independientes para los agentes de replicación creados para diferentes bases de datos
Puede especificar esto mientras crea agentes de replicación. Debe asegurarse de que todos los puntos táctiles de permisos se encargan. El procedimiento para cambiar la configuración de seguridad de los agentes de replicación ya creados se puede encontrar en Ver y modificar la configuración de seguridad de replicación.
Uso de la configuración del Registro para aumentar el tamaño del montón de escritorio
Puede cambiar las siguientes entradas del Registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\SessionViewSize (por ejemplo, aumente el valor de 48 a 64).
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows (por ejemplo, aumente el tercer valor de SharedSection en 256 kilobytes).
Tiene que aplicar los cambios en ambos nodos. Debe guardar las claves del Registro antes del cambio y debe reiniciar el servidor después de aplicar el cambio.
Cambiar los agentes de replicación de ejecutarse continuamente a ejecutarse de forma programada
Esto garantiza que los agentes de replicación se ejecuten solo cuando sea necesario y que no permanezcan inactivos constantemente (ya que esto desperdicia recursos).
Las instrucciones sobre cómo cambiar la programación del agente de replicación están disponibles en Especificar programaciones de sincronización.
Cambiar la ubicación del servidor en la que se ejecutan los agentes de replicación
Puede evaluar los pares publicador-suscriptor y ver si puede cambiar algunos suscriptores para extraer que harán que el agente de distribución o mezcla se ejecute en el suscriptor en lugar de en el publicador. Esto ayuda a reducir el número de agentes simultáneos que se deben ejecutar en el servidor.
Estado
Este comportamiento es por diseño.
Examen del uso del montón de escritorio
Cada cuenta que inicia el servicio Agente SQL Server corresponde a un montón de escritorio no interactivo. Además, todos los agentes de replicación administrados por el servicio Agente SQL Server comparten el montón de escritorio de la cuenta.
Puede usar la herramienta Monitor de montón de escritorio para examinar el uso del montón de escritorio. A continuación, puede decidir si tiene que aumentar o reducir el tamaño del montón de escritorio no interactivo. Normalmente, tienes que aumentar el tamaño.
Importante
La herramienta Monitor de montón de escritorio no funciona en Windows Server 2008 ni en una versión posterior de Windows. Si usa una de estas versiones de Windows, puede usar LiveKD para obtener los valores del montón de escritorio. Para obtener información sobre cómo hacerlo, vaya a la sección siguiente.
Para usar la herramienta Monitor de montón de escritorio para examinar el uso del montón de escritorio, siga estos pasos:
Descargue la herramienta Monitor de montón de escritorio.
Instale la herramienta Monitor de montón de escritorio. Para ello, siga estos pasos:
Haga doble clic en el paquete para extraer los archivos.
Haga clic en Inicioy en Ejecutar, escriba cmdy, a continuación, haga clic en Aceptar.
Escriba el siguiente comando en el símbolo del sistema:
Consola
CD ExtractFolder\kktools\dheapmon8.1\Platform
Nota
ExtractFolder es un marcador de posición para la carpeta donde se extraen los archivos. Platform es un marcador de posición para el nombre de la carpeta que corresponde a la plataforma específica.
En esta salida, el Service-0x0-2461f$\Default elemento representa la cuenta que inicia el servicio Agente SQL Server. Todos los agentes de replicación se ejecutan en el contexto de seguridad de esta cuenta. Si ejecuta más agentes de replicación, aumentará el uso del montón de escritorio. Si el uso del montón de escritorio es superior al 98 % o al 99 %, no se puede asignar ningún recurso de montón de escritorio. Por lo tanto, no puede iniciar ningún nuevo agente de replicación.
En esta salida, el uso del montón de escritorio de la cuenta es del 98,6 %. En esta situación, aumente el tamaño del montón de escritorio no interactivo aumentando el tercer valor del SharedSection parámetro. Después de aumentar el tercer valor, el problema se resuelve después de reiniciar el servidor. A continuación, puede usar la herramienta Monitor de montón de escritorio para examinar si el nuevo valor admite todos los agentes de replicación.
Se recomienda que el uso del montón de escritorio permanezca entre el 80 % y el 90 %. Si aumenta el tercer valor del SharedSection parámetro, se recomienda aumentar el valor en 512 cada vez.
Pasos para usar LiveKD para enumerar los valores del montón de escritorio
Copie todos los archivos desde la ubicación donde instaló las herramientas de depuración en C:\debugger. La ruta de acceso predeterminada es C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64.
Extraiga LiveKD en C:\debugger.
Abra un símbolo del sistema que tenga permisos elevados.
Ejecute el siguiente comando desde el símbolo del sistema:
LiveKd v5.3 - Execute kd/windbg on a live system
Sysinternals -[www.sysinternals.com](http://www.sysinternals.com/)
Copyright (C) 2000-2012 Mark Russinovich and Ken Johnson
Launching C:\Debugger\kd.exe:
Microsoft (R) Windows Debugger Version 6.2.9200.20512 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\Windows\livekd.dmp]
Kernel Complete Dump File: Full address space is available
Comment: 'LiveKD live system view'
Symbol search path is: srv*http://msdl.microsoft.com/download/symbols
Executable search path is:
Product: Server, suite:
Built by:
Machine Name:
Kernel base =
Debug session time:
System Uptime:
Loading Kernel Symbols
...............................................................
Loading User Symbols
...................................................
Loading unloaded module list
......Unable to enumerate user-mode unloaded modules, NTSTATUS 0xC0000147
Ejecute !dskheap para recibir la salida siguiente:
Consola
kd> !dskheap
*** ERROR: Module load completed but symbols could not be loaded for LiveKdD.SYS
Winstation\Desktop Heap Size(KB) Used 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%
------------------------------------------------------
Total Desktop: (23840 KB - 7 desktops)
Session ID: 0
============================================================
Descodifique el inicio de sesión cifrado haciendo lo siguiente:
"3e5$Service-0x0- 3e5 $\Default" -> 0x3e5 == 997.
Abra wbemtest desde el comando Ejecutar en Windows.
Conéctese al root\cimv2 espacio de nombres.
Haga clic en Consultay, a continuación, escriba select * from win32_logonsession.
Haga doble clic en la entrada que contiene 997.
Seleccione UUID en el editor de objetos y, a continuación, haga clic en Asociadores para mostrar el nombre de inicio de sesión real. Consulte la captura de pantalla siguiente:
Consideraciones si usa el protocolo de escritorio remoto
Si se conecta al servidor mediante el Protocolo de escritorio remoto (RDP), asegúrese de crear la sesión de consola mediante el /console modificador . Si no usa el /console modificador, no podrá ver el escritorio. Esto se debe a que la cuenta que inicia el servicio Agente SQL Server está asociada a la sesión 0.
El controlador Win32k.sys asigna 48 MB de espacio de direcciones de búfer para el montón de escritorio. Asegúrese de que no tiene muchos escritorios que usen todo el espacio de direcciones del búfer de 48 MB.
Si el servidor no está configurado como un servidor de terminal, todos los montones de escritorio comparten los 48 MB del espacio de direcciones del búfer. Esto limita el número de procesos de servicio que se pueden ejecutar en el servidor.
Si el servidor está configurado como un servidor de terminal, el controlador de Win32k.sys asigna 20 MB de espacio de direcciones de búfer para el montón de escritorio. El controlador Win32k.sys también asigna 16 MB de espacio de sesión para su propio grupo paginado.
Diferencias entre un servidor de terminal y los servicios de terminal con respecto al montón de escritorio
Un servidor de terminal y servicios de terminal son diferentes. El componente de Terminal Server se instala en Agregar o quitar programas. Después de instalar el componente de Terminal Server, el servidor se convierte en un servidor de terminal. Los servicios de terminal son un servicio que existe en el complemento Servicios de Microsoft Management Console (MMC). Si quita el componente de Terminal Server del servidor, los equipos cliente todavía pueden conectarse al servidor mediante RDP. Por lo tanto, considere la posibilidad de quitar el componente de Terminal Server para obtener los 48 MB de espacio de direcciones del búfer para el montón de escritorio.
Cómo afectan los trabajos de SQL Server 2005 al montón de escritorio
En SQL Server 2005, es posible que tenga trabajos diferentes que se ejecuten en distintas cuentas de proxy. Para cada cuenta de proxy, se asignará el montón de escritorio no interactivo para esa cuenta de proxy. Por ejemplo, el tercer valor del parámetro SharedSection es 512. Si usa una cuenta de proxy para iniciar un trabajo, se asignará el montón de escritorio de 512 KB, aunque el propio trabajo use solo 10 KB del montón de escritorio.
Nota
Otros trabajos que usan la misma cuenta de proxy seguirán usando este montón de escritorio.
Esto puede dar lugar a muchos escritorios cuando se inicia el servicio Agente SQL Server. Por lo tanto, se pueden usar los 48 MB del espacio de direcciones del búfer. Si usa la herramienta Monitor de montón de escritorio para examinar el uso del montón de escritorio, observará que un escritorio corresponde a una cuenta de proxy que usa un trabajo en ejecución. Se recomienda usar menos cuentas de proxy para evitar alcanzar el límite de 48 MB.
Azure HPC es una capacidad en la nube creada a propósito para la carga de trabajo de IA y de HPC, mediante procesadores de vanguardia e interconexión InfiniBand de clase HPC, con el fin de ofrecer el mejor rendimiento, escalabilidad y valor de la aplicación. Azure HPC permite a los usuarios desbloquear la innovación, la productividad y la agilidad empresarial, mediante una gama de tecnologías de inteligencia artificial y de HPC de alta disponibilidad que se pueden asignar dinámicamente a medida que cambian