REVISIÓN: Proveedor SQLOLEDB incorrectamente deja transacción abierta

Seleccione idioma Seleccione idioma
Id. de artículo: 281633 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Nº DE ERROR: 58292 (SQLBUG_70)
Nº DE ERROR: 235846 (SHILOH)
Expandir todo | Contraer todo

En esta página

Síntomas

Ejecutar una determinada secuencia de comandos que implican transacciones explícitas y parámetros en un programa de aplicación mediante el proveedor SQLOLEDB incorrectamente deja abierta una transacción no confirmada. Esto puede provocar el bloqueo de graves y otros problemas.

Causa

Aunque es establecer la opción SET 'implicit_transactions de ' en OFF, el proveedor SQLOLEDB está abriendo una transacción implícita.

Solución

MDAC 2.6

Para resolver este problema, obtenga el service pack más reciente para Microsoft Data Access Components 2.6. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
300635Cómo obtener el service pack más reciente de MDAC 2.6

revisión

importante : debe estar instalado Microsoft Data Access Components versión 2.6 antes de aplicar esta revisión.

La versión en inglés de esta revisión debe tener los atributos de archivo siguientes o posteriores:
   Date       Time     Version     Size      File name      Platform
   -----------------------------------------------------------------
   11/22/00   8:43pm   8.00.0225   491,584   Sqloledb.dll   Intel
   11/22/00   8:43pm   8.00.0225    61,440   Sqloledb.rll   Intel
				
Nota: debido a dependencias de archivo, el más reciente revisión o característica que contiene estos archivos quizás contenga también archivos adicionales.

Solución

Para evitar este problema, siga uno de los siguientes:
  • Utilice el proveedor OLEDB para ODBC en lugar del SQLOLEDB proveedor.

    -o bien -
  • Poner transacciones adicionales alrededor del código que crea el problema.

Estado

Microsoft ha confirmado que se trata de un problema en el proveedor OLE DB para SQL Server que se incluye en las versiones de Data Access Components (MDAC) 2.1, 2.5 y 2.6.

MDAC 2.6

Este problema se corrigió por primera vez en Microsoft Data Access Components 2.6 Service Pack 1.


MDAC 2.5

Este problema se corrigió por primera vez en la versión de Sqlredis.exe que se incluye con SQL Server 7.0 Service Pack 4.

Más información

A través la aplicación de seguimiento, puede ver en el Analizador de SQL Server que el proveedor SQLOLEDB está enviando las siguientes instrucciones a SQL Server:
SET FMTONLY ON select ... SET FMTONLY OFF
set implicit_transactions off SET NO_BROWSETABLE OFF
				
este implicit_transaction causas un ' ' ya está abierto.

Cuando se utiliza el proveedor OLEDB para ODBC y el controlador de SQL Server en su lugar, el mismo código exacto de Visual Basic/ADO envía las instrucciones siguientes a SQL Server:
set implicit_transactions off SET NO_BROWSETABLE OFF
SET FMTONLY ON select  ... SET FMTONLY OFF
				
así la FMTONLY SELECT abre una transacción implícita con SQLOLEDB. Sin embargo, porque la aplicación nunca abrió esta transacción, la aplicación normalmente nunca cerrará lo. Sólo se cerrará esta transacción en la siguiente transacción explícita.

Propiedades

Id. de artículo: 281633 - Última revisión: lunes, 24 de febrero de 2014 - Versión: 6.4
La información de este artículo se refiere a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
Palabras clave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbmdac260sp1fix kbqfe KB281633 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 281633

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com