REVISIÓN: No se pueden eliminar una sesión que se ejecuta una consulta en un servidor vinculado en SQL Server 2005 y SQL Server 2008

Microsoft distribuye Microsoft SQL Server 2005 o Microsoft SQL Server 2008 corrige como un archivo descargable. Como las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior SQL Server 2005 o Microsoft SQL Server 2008.

Síntomas

Síntoma 1

En Microsoft SQL Server 2005 o Microsoft SQL Server 2008, ejecute una consulta en un servidor vinculado. Al intentar eliminar la sesión que está ejecutando la consulta, no pudo detener la sesión. Además, el rendimiento de SQL Server se vuelve muy lento.

Se genera un archivo de minivolcado en la carpeta de registro de SQL Server. Si consulta la vista de administración dinámica sys.dm_os_waiting_tasks , recibirá un resultado similar al siguiente:
session_id request_id  ecid        blocking_session_id blocking_ecid task_state      wait_type      wait_duration_ms     ---------- ----------- ----------- ------------------- ------------- --------------- ------------------------------- 
14 NULL NULL NULL 0 NULL 0
20 0 0 0 0 SUSPENDED WRITELOG 1360
53 0 0 58 0 SUSPENDED LCK_M_S 31982080
55 0 0 0 0 RUNNING 0
58 0 0 0 0 SUSPENDED LOGBUFFER 1350
59 0 0 0 0 SUSPENDED LOGBUFFER 1350
60 0 0 0 0 RUNNING 0
61 0 0 0 0 SUSPENDED LOGBUFFER 1350
63 0 0 14 0 SUSPENDED LCK_M_X 76460
66 0 0 0 0 SUSPENDED LOGBUFFER 1350
68 0 0 0 0 SUSPENDED LOGBUFFER 1330
70 0 0 0 0 RUNNING 0
77 0 0 0 0 SUSPENDED LOGBUFFER 1350
84 0 0 0 0 SUSPENDED WRITELOG 1230
87 0 0 0 0 SUSPENDED WRITELOG 3970
88 0 0 0 0 SUSPENDED WRITELOG 1210

Nota: Debe reiniciar el servicio SQL Server para resolver este problema.

Síntoma 2

También puede experimentar el crecimiento de la memoria de SQLAgent a tamaños inusuales. Esto ocurre porque un trabajo SQLAgent programa ejecuta un procedimiento almacenado en un servidor vinculado. El procedimiento almacenado produce un error OLEDB. Se pasa el texto del error de OLEDB al SQLAgent y memoria se asigna continuamente los mensajes de texto desasigna nunca. Esto provoca el crecimiento de la memoria de SQLAgent. El gran número de asignaciones de memoria hace que el bucle indefinido en SQLAgent.

Información de la pila de llamadas

 # Child-SP          RetAddr           Call Site00 00000000`1e29c548 00000000`77adccec ntdll!memcpy+0x314 
01 00000000`1e29c550 00000000`77adbed4 ntdll!RtlpReAllocateHeap+0x741
02 00000000`1e29c800 00000000`73e62504 ntdll!RtlReAllocateHeap+0xa4
03 00000000`1e29c910 00000000`73de8356 sqlncli10!XxMpHeapReAlloc+0xca
04 00000000`1e29c950 00000000`73de82de sqlncli10!MpHeapReAlloc+0x44
05 00000000`1e29c9e0 00000000`73de826e sqlncli10!MpReallocZeroMemory+0x69
06 00000000`1e29ca10 00000000`73dfb015 sqlncli10!SQLReAllocateMemoryEx+0x2a
07 00000000`1e29ca50 00000000`73df8b7b sqlncli10!PlAddNewIEx+0x8e
08 00000000`1e29caa0 00000000`73df869b sqlncli10!SortErrors+0x6b
09 00000000`1e29cae0 000007fe`f6448d44 sqlncli10!SQLGetDiagFieldW+0x2bc
0a 00000000`1e29d180 000007fe`f64471b9 odbc32!DriverGetDiagField+0x124
0b 00000000`1e29d200 00000000`743a253e odbc32!SQLGetDiagFieldW+0x471
0c 00000000`1e29d750 00000000`7439d0d3 sqlsvc!GetInfoMessage+0x4e
0d 00000000`1e29d7b0 00000000`7439fee2 sqlsvc!dbQSQLMessageHandler+0x3a3
0e 00000000`1e2a1b50 00000000`0021c416 sqlsvc!QSQLExecDirectAsync+0x1a2
0f 00000000`1e2a1bb0 00000000`0021bac7 SQLAGENT!DoSQL+0x316
10 00000000`1e2a21a0 00000000`002339a3 SQLAGENT!ExecuteTSQL+0xd97
11 00000000`1e2a6cd0 00000000`00231f8a SQLAGENT!StartStep+0x693
12 00000000`1e2a77d0 00000000`00230daf SQLAGENT!DoStep+0x3ba
13 00000000`1e2ac7a0 00000000`756437d7 SQLAGENT!JobManager+0xa6f

Causa

Cuando intenta eliminar la sesión que está ejecutando la consulta, se produce una excepción interna. SQL Server comienza a recorrer en iteración un bucle indefinido. Por lo tanto, no se puede terminar la sesión, y disminuye el rendimiento.

Solución

Información de la actualización acumulativa para SQL Server 2005 Service Pack 2


La corrección para este problema se lanzó primero en 12 de actualización acumulativa para SQL Server 2005 Service Pack 2. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
962970 acum actualizar paquete 12 para SQL Server 2005 Service Pack 2
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la versión anterior de SQL Server 2005. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
937137 el SQL Server 2005 crea que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 2
Las revisiones de Microsoft SQL Server 2005 se crean para determinados service Pack de SQL Server. Debe aplicar un hotfix de SQL Server 2005 Service Pack 2 a una instalación de SQL Server 2005 Service Pack 2. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el próximo service pack de SQL Server.

Información de la actualización acumulativa para SQL Server 2005 Service Pack 3

La corrección para este problema en primer lugar se publicó en actualización acumulativa 3 para SQL Server 2005 Service Pack 3. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2005, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
967909 acum actualizar paquete 3 para SQL Server 2005 Service Pack 3
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la versión anterior de SQL Server 2005. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
960598 el SQL Server 2005 crea que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 3

Información de la actualización acumulativa para la versión comercial de SQL Server 2008

La corrección para este problema en primer lugar se publicó en la actualización acumulativa 4. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2008, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Paquete 4 de actualización de 963036 acumulativa para SQL Server 2008
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
956909 the SQL Server 2008 generaciones que se publicaron después del lanzamiento de SQL Server 2008

Información sobre la actualización acumulativa para SQL Server 2008 Service Pack 1

La corrección para este problema se publicó primero en la actualización acumulativa 1 para SQL Server 2008 Service Pack 1. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2008, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Paquete 1 de actualización de 969099 acumulativa para SQL Server 2008 Service Pack 1
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
970365 the SQL Server 2008 generaciones que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 1

Solución alternativa

Para evitar el síntoma 1, utilice una expresión para la propiedad SQLStatementSource de la tarea Ejecutar SQL para especificar la instrucción SELECT utilizando la variable. Por ejemplo, establezca la siguiente expresión para la propiedad SQLStatementSource de la tarea Ejecutar SQL.
SELECT filed1 AS a FROM table1 WHERE filed1="+ @[User::variable1]
Síntoma 2, si SQLAgent crecimiento inusualmente alta de memoria se ve, la causa del error OLEDB también se debe investigar y resolver, así como la aplicación de la actualización acumulativa para el proceso de SQL Server.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Más información

Más información sobre el paquete de actualización acumulativa 12 para SQL Server 2005 Service Pack 2

Para obtener más información acerca de qué archivos se cambian y para obtener información acerca de los requisitos previos para aplicar el paquete de actualización acumulativa que contiene la revisión que se describe en este artículo de Microsoft Knowledge Base, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
962970 acum actualizar paquete 12 para SQL Server 2005 Service Pack 2

Más información sobre el paquete de actualización acumulativa 3 para SQL Server 2005 Service Pack 3

Para obtener más información acerca de qué archivos se cambian y para obtener información acerca de los requisitos previos para aplicar el paquete de actualización acumulativa que contiene la revisión que se describe en este artículo de Microsoft Knowledge Base, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
967909 acum actualizar paquete 3 para SQL Server 2005 Service Pack 3

Para obtener más información sobre el paquete de actualización acumulativa 4 para la versión comercial de SQL Server 2008

Para obtener más información acerca de qué archivos se cambian y para obtener información acerca de los requisitos previos para aplicar el paquete de actualización acumulativa que contiene la revisión que se describe en este artículo de Microsoft Knowledge Base, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Paquete 4 de actualización de 963036 acumulativa para SQL Server 2008

Más información sobre el paquete de actualización acumulativa 1 de SQL Server 2008 Service Pack 1

Para obtener más información acerca de qué archivos se cambian y para obtener información acerca de los requisitos previos para aplicar el paquete de actualización acumulativa que contiene la revisión que se describe en este artículo de Microsoft Knowledge Base, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Paquete 1 de actualización de 969099 acumulativa para SQL Server 2008 Service Pack 1

Información de la pila de llamadas

0:053> kL30Child-SP          Child-BSP         RetAddr           Call Site
00000000`46a3b320 00000000`46a41a78 00000000`77b99750 ntdll!RtlVirtualUnwind+0x100
00000000`46a3bc80 00000000`46a418f8 00000000`781a5900 ntdll!RtlUnwindEx+0x110
00000000`46a3c890 00000000`46a41870 00000000`781a2d40 msvcr80!_UnwindNestedFrames+0x2a0
00000000`46a3c970 00000000`46a41810 00000000`781a3950 msvcr80!CatchIt+0xe0
00000000`46a3c9d0 00000000`46a41730 00000000`781a41a0 msvcr80!FindHandler+0x710
00000000`46a3d480 00000000`46a416b8 00000000`781a4d90 msvcr80!__InternalCxxFrameHandler+0x4e0
00000000`46a3d480 00000000`46a41628 00000000`77c28860 msvcr80!__CxxFrameHandler3+0x370
00000000`46a3d4a0 00000000`46a41628 00000000`77b9a2d0 ntdll!RtlpExecuteEmHandlerForException+0x50
00000000`46a3d4c0 00000000`46a414a8 00000000`77b993a0 ntdll!RtlDispatchException+0x3f0
00000000`46a3e170 00000000`46a41450 00000000`77b99440 ntdll!RtlpRaiseException+0x120
00000000`46a3ec00 00000000`46a41438 00000000`76eb1d40 ntdll!RtlRaiseException+0x20
00000000`46a3ec00 00000000`46a413c8 00000000`781a5aa0 kernel32!GetDateFormatW+0x7a6d8
00000000`46a3eca0 00000000`46a41360 00000000`014f2d30 msvcr80!_CxxThrowException+0x160
00000000`46a3ecf0 00000000`46a412f0 00000000`014f3150 sqlservr!TurnUnwindAndThrowImpl+0x2f0
00000000`46a3ee50 00000000`46a411f0 00000000`014f37b0 sqlservr!ex_raise2+0x6b0
00000000`46a3f110 00000000`46a41190 00000000`038ee0e0 sqlservr!ex_raise+0xc0
00000000`46a3f150 00000000`46a41158 00000000`028bffa0 sqlservr!`anonymous namespace'::LogTdsProtocolError+0xd0
00000000`46a3f160 00000000`46a41138 00000000`0200eed0 sqlservr!`anonymous namespace'::RaiseErrorOnNestedStream+0x60
00000000`46a3f160 00000000`46a41088 00000000`01172180 sqlservr!CPostHydraTds::SendMsgImpl+0xe98100
00000000`46a3f1c0 00000000`46a41030 00000000`01172040 sqlservr!ODS_SENDFULLMSG+0x100
00000000`46a3f220 00000000`46a40fa0 00000000`011738b0 sqlservr!SendErrorToUser+0x1d0
00000000`46a3f290 00000000`46a40f20 00000000`01105a00 sqlservr!CErrorReportingManager::SendErrorToUser+0x260
00000000`46a3f320 00000000`46a40e10 00000000`0118a3d0 sqlservr!CErrorReportingManager::CwchFormatAndPrint+0x610
00000000`46a3f470 00000000`46a40dd8 00000000`0118a2f0 sqlservr!ex_vcallprint+0xb0
00000000`46a3f4b0 00000000`46a40d80 00000000`024cbfb0 sqlservr!ex_callprint+0xa0
00000000`46a3f4f0 00000000`46a40c90 00000000`02514e20 sqlservr!COledbError::FRelayErrorInfo+0x960
00000000`46a3f570 00000000`46a40c58 00000000`02f82030 sqlservr!COledbError::FPrintSQLServerError+0x190
00000000`46a3f5a0 00000000`46a40c10 00000000`0441b450 sqlservr!COledbError::GatherAndPrintMultipleResultsError+0x30
00000000`46a3f5b0 00000000`46a40b28 00000000`0164d160 sqlservr!CQScanRmtQueryNew::GetRow+0xad0
00000000`46a3f660 00000000`46a40a28 00000000`01768560 sqlservr!CQScanNLJoinTrivialNew::GetRow+0x1a90
00000000`46a3f690 00000000`46a40928 00000000`01333d30 sqlservr!CXStmtQuery::ErsqExecuteQuery+0xe50
00000000`46a3f760 00000000`46a407c8 00000000`0130ce40 sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+0x19d0
00000000`46a3f870 00000000`46a406d0 00000000`0130ac70 sqlservr!CMsqlExecContext::FExecute+0x7c0
00000000`46a3f960 00000000`46a405f0 00000000`010fa300 sqlservr!CSQLSource::Execute+0x5f0
00000000`46a3fa10 00000000`46a404f8 00000000`010fa5c0 sqlservr!process_request+0x5c0
00000000`46a3fbe0 00000000`46a40478 00000000`0100e4b0 sqlservr!process_commands+0x6d0
00000000`46a3fdf0 00000000`46a40420 00000000`0100e210 sqlservr!SOS_Task::Param::Execute+0x1a0
00000000`46a3fe70 00000000`46a40378 00000000`0100dc30 sqlservr!SOS_Scheduler::RunTask+0x190
00000000`46a3fe90 00000000`46a402b0 00000000`01061ea0 sqlservr!SOS_Scheduler::ProcessTasks+0x170

Referencias

Para obtener más información acerca de la lista de compilaciones disponibles después de SQL Server 2005 Service Pack 3, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
960598 Compilaciones de SQL Server 2005 que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 3
Para obtener más información acerca de la lista de compilaciones disponibles después del lanzamiento de SQL Server 2008 Service Pack 1, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

970365 the SQL Server 2008 generaciones que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 1

Para obtener más información acerca de la lista de compilaciones disponibles después del lanzamiento de SQL Server 2008, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

956909 the SQL Server 2008 generaciones que se publicaron después del lanzamiento de SQL Server 2008

Para obtener más información acerca de la lista de compilaciones disponibles después de SQL Server Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
937137 el SQL Server 2005 crea que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 2
Para obtener más información sobre el modelo de servicio Incremental de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897 un modelo de servicio Incremental está disponible en el equipo de SQL Server para entregar revisiones para problemas detectados
Para obtener más información acerca de cómo obtener SQL Server 2005 Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
913089 cómo obtener el service pack más reciente para SQL Server 2005
Para obtener más información acerca de las nuevas características y mejoras de SQL Server 2005 Service Pack 2, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca del esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Paquetes de actualización de 822499 nuevo esquema de nomenclatura para software de Microsoft SQL Server
Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft
Propiedades

Id. de artículo: 961237 - Última revisión: 13 ene. 2017 - Revisión: 1

Comentarios