Transacciones anidadas en Vb 6, Sql server 2000, Ado 2.7

04/09/2003 - 12:59 por Alf | Informe spam
Hola, os expongo el problema que tengo.



El programa está desarrollado en VB 6 con SQL Server 2000, a través de ADO
2.7, el problema viene con las transacciones anidadas, al llamar a la
transacción anidada, el programa dice que no se pueden iniciar más
transacciones.



SQL Server 2000 permite transacciones anidadas, VB 6 permite transacciones
anidadas.



Microsoft indica en su web, que no se permiten transacciones anidadas en
ODBC/OLE DB/ADO, pero especifica lo siguiente:



The ADO Help indicates that ADO supports nested transactions but only if the
underlying OLE DB Provider supports nested transactions. The following
Microsoft Providers do not support Nested Transactions:

· OLE DB Provider for ODBC Drivers

· Index Server Provider for OLE DB

· Active Directory Provider for OLE DB



Si no puedo encontrar la forma de solucionarlo desde VB, me gustaría poderlo
hacer desde un procedimiento almacenado, en el que incluya las transacciones
anidadas pero entonces, me surge otro problema o duda: ¿Se puede recorrer un
conjunto de registros y procesarlos dentro de un procedimiento almacenado?,
¿Cómo?



La idea es la siguiente:

Function PPP



a.. Comenzar transacción
b.. Abrir un Recordset
c.. Recorrerlo y por cada registro, llamar a otras funciones que a su vez
recorren y modifican recordsets
d.. Llamar a la función XXX
e.. Finalizar transacción


End function



Function XXX



a.. Comenzar transacción
b.. Abrir un Recordset
c.. Recorrerlo y por cada registro, llamar a otras funciones que a su vez
recorren y modifican recordsets
d.. Finalizar transacción


End function

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
04/09/2003 - 13:10 | Informe spam
Hola:

Lo que indicas, se puede hacer en SQL Server utilizando cursores.

Ahora, los cursores no dan buen rendimiento, como habrás leído muchas veces
en este foro, y además en la mayoría de los casos suele haber soluciones
alternativas para evitar su uso.

Un saludo
Salvador Ramos
Murcia - España

No puedes conseguir software rápidamente disminuyendo su calidad.
En cambio, si que lo consigues aumentando la calidad.

www.helpdna.net (información sobre Windows DNA, SQL Server, .NET, ...)


Microsoft MVP SQL Server
MCP SQL Server
PASS Spanish Group (www.sqlpass.org)


"Alf" escribió en el mensaje
news:#

Hola, os expongo el problema que tengo.



El programa está desarrollado en VB 6 con SQL Server 2000, a través de ADO
2.7, el problema viene con las transacciones anidadas, al llamar a la
transacción anidada, el programa dice que no se pueden iniciar más
transacciones.



SQL Server 2000 permite transacciones anidadas, VB 6 permite transacciones
anidadas.



Microsoft indica en su web, que no se permiten transacciones anidadas en
ODBC/OLE DB/ADO, pero especifica lo siguiente:



The ADO Help indicates that ADO supports nested transactions but only if


the
underlying OLE DB Provider supports nested transactions. The following
Microsoft Providers do not support Nested Transactions:

· OLE DB Provider for ODBC Drivers

· Index Server Provider for OLE DB

· Active Directory Provider for OLE DB



Si no puedo encontrar la forma de solucionarlo desde VB, me gustaría


poderlo
hacer desde un procedimiento almacenado, en el que incluya las


transacciones
anidadas pero entonces, me surge otro problema o duda: ¿Se puede recorrer


un
conjunto de registros y procesarlos dentro de un procedimiento


almacenado?,
¿Cómo?



La idea es la siguiente:

Function PPP



a.. Comenzar transacción
b.. Abrir un Recordset
c.. Recorrerlo y por cada registro, llamar a otras funciones que a su


vez
recorren y modifican recordsets
d.. Llamar a la función XXX
e.. Finalizar transacción


End function



Function XXX



a.. Comenzar transacción
b.. Abrir un Recordset
c.. Recorrerlo y por cada registro, llamar a otras funciones que a su


vez
recorren y modifican recordsets
d.. Finalizar transacción


End function




Respuesta Responder a este mensaje
#2 ulises
04/09/2003 - 21:08 | Informe spam
Inicia tu secuencia de transacciones anidadas con un BEGIN
TRAN y terminala con un COMMIT o ROLLBACK, eso evitará que
se trate de iniciar una transacción por cada sentencia.

Saludos,
Ulises
PD. Espero haber entendido bien tu pregunta :-)


Hola, os expongo el problema que tengo.



El programa está desarrollado en VB 6 con SQL Server


2000, a través de ADO
2.7, el problema viene con las transacciones anidadas, al


llamar a la
transacción anidada, el programa dice que no se pueden


iniciar más
transacciones.



SQL Server 2000 permite transacciones anidadas, VB 6


permite transacciones
anidadas.



Microsoft indica en su web, que no se permiten


transacciones anidadas en
ODBC/OLE DB/ADO, pero especifica lo siguiente:



The ADO Help indicates that ADO supports nested


transactions but only if the
underlying OLE DB Provider supports nested transactions.


The following
Microsoft Providers do not support Nested Transactions:

· OLE DB Provider for ODBC Drivers

· Index Server Provider for OLE DB

· Active Directory Provider for OLE DB



Si no puedo encontrar la forma de solucionarlo desde VB,


me gustaría poderlo
hacer desde un procedimiento almacenado, en el que


incluya las transacciones
anidadas pero entonces, me surge otro problema o duda:


¿Se puede recorrer un
conjunto de registros y procesarlos dentro de un


procedimiento almacenado?,
¿Cómo?



La idea es la siguiente:

Function PPP



a.. Comenzar transacción
b.. Abrir un Recordset
c.. Recorrerlo y por cada registro, llamar a otras


funciones que a su vez
recorren y modifican recordsets
d.. Llamar a la función XXX
e.. Finalizar transacción


End function



Function XXX



a.. Comenzar transacción
b.. Abrir un Recordset
c.. Recorrerlo y por cada registro, llamar a otras


funciones que a su vez
recorren y modifican recordsets
d.. Finalizar transacción


End function




.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida