Síntomas
De forma predeterminada, los puntos de control indirectos están activados para la base de datos tempdb en Microsoft SQL Server 2016 y 2017. En condiciones de carga de trabajo elevada, puede producirse un error "Programador no rendto" y la sys.dm_os_spinlock_stats DMV muestra contención de bloqueo elevado para el tipo de bloqueo de número DP_LIST.
Solución
Esta corrección se incluye en las siguientes actualizaciones y Service Pack:
-
Actualización acumulativa 5 de SQL Server 2016 Service Pack 1
-
Actualización acumulativa 8 de SQL Server 2016
Información del Service Pack para SQL Server 2016
Acerca de las compilaciones de SQL Server
Cada nueva compilación de SQL Server contiene todas las revisiones y correcciones de seguridad que se encontraban en la compilación anterior. Le recomendamos que instale las actualizaciones acumulativas más recientes para SQL Server:
Los Service Pack son acumulativos. Cada nuevo Service Pack contiene todas las revisiones de Service Packs previos junto con revisiones nuevas. Nuestra recomendación es aplicar el Service Pack más reciente y la actualización acumulativa más reciente para ese Service Pack. No es necesario instalar un Service Pack anterior antes de instalar el Service Pack más reciente. Use la Tabla 1 del artículo siguiente para obtener más información sobre el Service Pack más reciente y la actualización acumulativa más reciente.
Cómo determinar el nivel de versión, edición y actualización de SQL Server y sus componentes
Solución alternativa
Para solucionar este problema, desactive los puntos de control indirectos en la base de datos tempdb mediante una de las siguientes instrucciones de lenguaje de definición de datos (DDL).
Esto se debe hacer de la siguiente manera:
-
En la base de datos modeldb (esto también cambia el valor predeterminado para las nuevas bases de datos), ejecute la siguiente instrucción:
ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES -
O bien, directamente en la base de datos tempdb cada vez que se inicia la instancia mediante la Agente SQL Server mediante la siguiente instrucción:
ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES -
O bien, emita periódicamente puntos de control manuales en la base de datos tempdb mediante la siguiente instrucción:
use tempdb
go checkpoint
go
Además, TF 3468 se puede utilizar para deshabilitar el punto de control indirecto en tempdb.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Referencias
Obtén información sobre la terminología que usa Microsoft para describir las actualizaciones de software. Consulte los siguientes artículos para obtener más información: