INFORMACIÓN: Transacciones anidadas no está disponible en ODBC y OLE DB y ADO

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

En esta página

Resumen

(Open Database CONNECTIVITY), ni proveedor de Microsoft OLE DB admite transacciones anidadas. ActiveX Data Objects (ADO) admite la característica, pero sólo si el proveedor subyacente expone. Actualmente sólo el proveedor Jet OLE DB admite transacciones anidadas.

Más información

ODBC ni cualquier comercial proveedor OLE DB, expone funcionalidad de transacciones anidadas, incluso si el origen de datos back-end admite esta característica.

Transacciones anidadas son una característica del motor de Jet, pero sólo cuando el motor Jet directamente a través de datos Access Objects (DAO) de acceso. Si utilizando DAO con un archivo de base de datos (MDB) de Microsoft que tiene un adjunto ODBC se omite el origen de datos, cualquier intento de utilizar transacciones anidadas.

La Ayuda de ADO indica que ADO admite transacciones anidadas, pero sólo si el proveedor OLE DB subyacente admite transacciones anidadas. Los siguientes proveedores de Microsoft no admiten transacciones anidadas: proveedor OLE DB para controladores ODBC
Proveedor de Index Server para OLE DB
Active Directory Proveedor para OLE DB

Código de ejemplo

A continuación es el mensaje de error y el fragmento de código que genera el error de ADO cuando el proveedor subyacente no admite transacciones anidadas:
Error en tiempo de ejecución '-2147168237 (8004d013) ':
Puede estar activa sólo una transacción en esta sesión.
Es aquí el código utilizado para generar el error:
   Option Explicit
   Dim Cn As ADODB.Connection
   Dim Cmd1 As ADODB.Command
   Dim strConn, strQSQL As String

   Private Sub Form_Load()

   ' Open connection.  Set Cn = New ADODB.Connection
   ' Change the connect string to match your setup
   strConn = "driver={SQL Server};server=MyServer;" & _
   "uid=<username>;pwd=<strong password>;database=pubs"
   Set Cn = New ADODB.Connection
   Cn.Open strConn
   Cn.CursorLocation = adUseClient
   'Cmd1 executes a SQL Insert
   strQSQL = "Insert INTO Stores (stor_id, stor_name, " & _
   "stor_address, city) VALUES(?,?,?,?)"
   Set Cmd1 = New ADODB.Command
   With Cmd1
   .ActiveConnection = Cn
   .CommandText = strQSQL
   .CommandType = adCmdText
   .Parameters.Append .CreateParameter("", adChar, adParamInput, 4)
   .Parameters.Append .CreateParameter("", adVarChar, adParamInput, 40)
   .Parameters.Append .CreateParameter("", adVarChar, adParamInput, 40)
   .Parameters.Append .CreateParameter("", adVarChar, adParamInput, 20)
   End With
   End Sub

   Private Sub cmdInsert_Click()
   MousePointer = vbHourglass

   Cn.BeginTrans

   Cmd1(0) = "101"
   Cmd1(1) = "Store One"
   Cmd1(2) = "123 Oak St."
   Cmd1(3) = "Seattle"
   Cmd1.Execute

   Cn.BeginTrans   'Comment out and this code will run and if you do so,
                   'Make sure that you delete the record that this sample
                   'adds to the database.

   Cmd1(0) = "102"
   Cmd1(1) = "Store Two"
   Cmd1(2) = "123 Main St."
   Cmd1(3) = "Tacoma"
   Cmd1.Execute

   Cn.CommitTrans   'Comment out and this code will run.

   Cn.CommitTrans

   MousePointer = vbDefault
   End Sub

   Private Sub Form_Unload(Cancel As Integer)
   Cn.Close
   Set Cn = Nothing
   Set Cmd1 = Nothing

   End Sub

Referencias

http://msdn.microsoft.com/en-us/data/aa937729.aspx
El Microsoft Jet Database Engine manual del programador (Second Edition), página 425 - "Anidamiento de transacciones," Microsoft Press.

Propiedades

Id. de artículo: 177138 - Última revisión: viernes, 05 de diciembre de 2003 - Versión: 4.2
La información de este artículo se refiere a:
  • Microsoft Data Access Components 1.5
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
  • Microsoft Data Access Components 2.8
Palabras clave: 
kbmt kbdatabase kbinfo kbinterop KB177138 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): 177138

Enviar comentarios