Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo le ayuda a resolver un problema que hace que Microsoft SQL Server genere un archivo de volcado de recursos y el servicio SQL Server deje de responder.
Síntomas
Considere el caso siguiente:
SQL Server genera un archivo de volcado de aserción. Esto hace que el servicio SQL Server deje de responder.
En el registro de errores de SQL Server, observará la siguiente expresión de aserción:
pilb->m_cRef == 0. Para obtener más información sobre las aserciones y cómo solucionar problemas, consulte MSSQLSERVER_3624 - SQL Server.2023-03-14 06:12:44.83 spid54 * Ubicación: memilb.cpp:1836 2023-03-14 06:12:44.83 spid54 * Expresión: pilb-m_cRef> == 0
SQL Server deja de responder durante el proceso del archivo de volcado.
Causa
A continuación se muestran algunas condiciones que pueden afectar cuando se genera el archivo de volcado de SQL Server:
Una consulta remota se ejecuta mediante el
EXEC ATcomando . Por ejemplo:DECLARE @test NVARCHAR(MAX) = N'ABC' EXEC ('SELECT * FROM Customers.dbo.CustomerInformation WHERE CustomerId = ?', @test) AT [YourRemoteServer];Se pasa un argumento de objeto grande (LOB) a la consulta. Para obtener más información sobre los tipos de datos LOB, vea Tipos de datos (Transact-SQL): SQL Server.
En el ejemplo anterior, la NVARCHAR(MAX) variable se pasa como parámetro de consulta. Se produce un error en una de las solicitudes subyacentes que se envían al servidor vinculado.
También puede reproducir el problema ejecutando la consulta siguiente:
DECLARE @test NVARCHAR(MAX) = N'msdb'
EXEC ('---SELECT * FROM sys.databases where name = ?', @test) AT [<server>\<instance>]
Para evitar este problema, use el tipo de datos nonblob (BLOB) en el diseño o el código de la base de datos:
DECLARE @test NVARCHAR(5) = N'msdb'
EXEC ('---SELECT * FROM sys.databases where name = ?', @test) AT [<server>\<instance>]
Advertencia
Si ejecuta este código en su entorno, es probable que encuentre un archivo de volcado de memoria que provocará una interrupción. Corre a tu propio riesgo.
Estado
Microsoft sigue investigando este problema para identificar una corrección a largo plazo. Hasta que haya una corrección disponible, puede probar la solución alternativa que se proporciona en la sección siguiente.
Solución alternativa
Para solucionar este problema, cambie todos los LOB tipos de datos (Objeto grande) a los tipos de datos de longitud fija que admite la longitud de datos de entrada. Por ejemplo, convierta NVARCHAR(MAX) en NVARCHAR(200)).