Mensaje de error al implementar una transacción anidada con el proveedor OLE DB para SQL Server: "No se pudo iniciar una transacción de proveedor OLE DB"

Seleccione idioma Seleccione idioma
Id. de artículo: 306649 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Proveedor Microsoft OLE DB para SQL Server no admite transacciones anidadas y se devuelve el mensaje de error siguiente:
No se pudo iniciar una transacción para el proveedor OLE DB '% ls'.
Microsoft SQL Server también devuelve el siguiente mensaje de error si el proveedor es un proveedor específico de SQL Server:
Servidor: Msg 7392, nivel 16, estado 2,
No se pudo iniciar una transacción para el proveedor OLE DB 'SQLOLEDB'. [Proveedor OLE/DB devolvió el mensaje: puede estar activa una transacción en esta sesión.]

Causa

Este error indica que se está intentando una instrucción de modificación de datos de un proveedor OLE DB cuando la conexión está en una transacción explícita o implícita, y el proveedor OLE DB no admite transacciones anidadas. SQL Server requiere esta compatibilidad para que, en determinadas condiciones de error, pueden terminar los efectos de la instrucción de modificación de datos mientras continúa con la transacción.

Solución

Para evitar este problema, establezca XACT_ABORT en ON antes de la transacción. Esto hace que SQL Server para terminar la transacción adyacente cuando se produce un error al procesar la instrucción de modificación de datos. Si SET XACT_ABORT es ON, SQL Server no requiere la compatibilidad de transacciones anidadas desde el proveedor OLE DB.

Estado

Este comportamiento es por diseño.

Más información

Pasos para reproducir este comportamiento

Este ejemplo utiliza un servidor vinculado, que utiliza el proveedor OLE DB para SQL Server, para explicar el efecto de XACT_ABORT.
  1. Utilizar proveedor OLE DB para SQL Server para crear un servidor vinculado denominado ventas que utiliza el proveedor Microsoft OLE DB para SQL Server.
    USE Master
    GO
    EXEC sp_addlinkedserver 
        'Sales',
        N'SQL Server'
    GO
    					
  2. Abra el Analizador de consultas y ejecute el comando siguiente.
    Begin Transaction
    Insert into Sales.Northwind.DBO.Customers(CustomerId,CompanyName) Values ('1000','Test')
    Commit Transaction
    					
    recibe la mensaje de error mencionados anteriormente.

    Solución

  3. Ejecute el comando siguiente para establecer XACT_ABORT a ON:
    Set XACT_ABORT ON
    					
  4. Ejecute la instrucción Insertar nuevo. Observe que los datos se insertan en la tabla sin un error.

Referencias

Para obtener información adicional, haga clic en los números de artículo correspondientes para verlos en Microsoft Knowledge Base:
177138INFORMACIÓN: Transacciones anidadas no está disponible en ODBC y OLE DB y ADO
187289Cómo: Implementar transacciones anidadas con Oracle

Propiedades

Id. de artículo: 306649 - Última revisión: viernes, 09 de diciembre de 2005 - Versión: 4.2
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.6 Service Pack 1
Palabras clave: 
kbmt kbprb KB306649 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): 306649

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