Después de aplicar esta actualización, tiene que agregar la marca de seguimiento-T8075 como parámetro de inicio para habilitar este cambio.
Síntomas
Cuando ejecuta una consulta en una versión de 64 bits de Microsoft SQL Server 2012, recibe un mensaje de error de memoria insuficiente que se asemeja a lo siguiente en el registro de errores de SQL Server:
Error al asignar páginas: FAIL_PAGE_ALLOCATION 513
Las consultas tardan mucho tiempo en finalizar la ejecución y encontrarse SOS_MEMORY_TOPLEVELBLOCKALLOCATOR espera. Cuando examine los siguientes puntos de información, verá que hay muy poco espacio virtual de direcciones disponible:
-
DBCC MEMORYSTATUS-Process/System Counts Section: memoria virtual disponible
-
DMV: sys.dm_os_process_memory virtual_address_space_available_kb de columnas
Estos valores comienzan aproximadamente 8 terabytes (TB) en un proceso x64 y siguen subiendo y llegando a unos pocos gigabytes (GB). Cuando se encuentre en el escenario en el que el espacio de direcciones virtual disponible es muy bajo, las consultas que intenten realizar la asignación de memoria también pueden encontrarse en el tipo de espera de CMEMTHREAD. Los siguientes puntos de datos seguirán aumentando a lo largo del tiempo:
-
DMV: sys.dm_os_process_memory y virtual_address_space_reserved_kb de columnas sys.dm_os_memory_nodes
-
Sección DBCC MEMORYSTATUS-Memory Manager-VM reservada
Estos valores generalmente aumentan en múltiplos del valor "Max Server Memory" hasta casi 8 TB.
Causa
Cuando el proceso de SQL Server haya alcanzado el estado en el que se encuentra la memoria total del servidor = target server memory = Max Server, hay directivas en el administrador de memoria de SQL Server para permitir que nuevas asignaciones solicite que varias páginas de 8 KB se realicen correctamente de forma temporal. El patrón de asignación reiterada en dicha condición puede provocar la fragmentación de los bloques de memoria y el consumo de espacio de direcciones virtuales. Si este proceso se repite varias veces, el espacio de dirección virtual de SQL Server se agotará y verá los síntomas mencionados anteriormente.
Resolución
Información sobre la actualización acumulativa
El problema se solucionó por primera vez en la siguiente actualización acumulativa de SQL Server.
Cada actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de seguridad incluidas en la actualización acumulativa anterior. Le recomendamos que descargue e instale las últimas actualizaciones acumulativas de SQL Server:
Este Hotfix evita tanto la memoria insuficiente como la reducción continua del espacio de direcciones virtuales disponibles que puede experimentar.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Más información
-
Windows 2012 R2 permite que el espacio de direcciones virtuales crezca hasta un tamaño de 128 TB. Por lo tanto, es posible que no vea este problema en entornos Windows 2012 R2. Para obtener más información, vea el tema siguiente en el centro de desarrollo de Windows:límites de memoria para Windows y versiones de Windows Server
-
Si ve crecimiento continuo en el espacio de direcciones virtuales incluso después de aplicar la corrección, puede determinar qué consultas o operaciones solicitan grandes cantidades de memoria mediante el Page_allocated evento extendido. Una secuencia de comandos de ejemplo tiene el siguiente aspecto:
CREATE EVENT SESSION [memory_tracking] ON SERVERADD EVENT sqlos.page_allocated( ACTION(package0.callstack,sqlos.cpu_id,sqlos.task_address,sqlos.worker_address,sqlserver.database_id,sqlserver.query_hash,sqlserver.request_id,sqlserver.session_id,sqlserver.sql_text) WHERE ([number_pages]>(1)))ADD TARGET package0.event_file(SET filename=N'E:\Data\MSSQL11.MSSQLSERVER\MSSQL\Log\memory_tracking.xel')WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=PER_CPU,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)GO
Normalmente, son copias de seguridad de registros y operaciones de mantenimiento de índices, que se producen con frecuencia.