La Transaccion bloquea una SELECT

15/06/2005 - 14:07 por Cesar | Informe spam
Tengo el siguiente problema y no me cuadra con lo que leo en la ayuda del SQL
Server 2000.
Hago el siguiente proceso en mi aplicacion:
1.- Me conecto la servidor con ADO.
2.- Inicio una transaccion.
3.- Ejecuto un insert en la TABLA 1.

Desde este mismo momento la TABLA 1 queda bloqueada completamente, y no
puedo hacer SELECT de ella, ni desde otras aplicaciones, ni desde el
Administrador Corporativo, ni desde en Analizador de consultas. Sólo se
libera cuando realizo el commit del transaccion.

Esta es la configuración de la conexión que estoy usando:
mObjADOConexion.CommandTimeout = iTimeOutProceso
mObjADOConexion.ConnectionString = pStrConexion
mObjADOConexion.ConnectionTimeout = iTimeOutConexion
mObjADOConexion.CursorLocation = adUseClient
mObjADOConexion.Properties("Prompt").Value = adPromptNever
Y he probado con casi todos los IsolationLevel.

¿Es normal esto en SQL Server 2000?.
Yo pensaba que la SELECT debería funcionar aunque no me apareciera el
registro insertado en la transacción, ya que aún no he realizado el commit.
 

Leer las respuestas

#1 Alejandro Mesa
15/06/2005 - 15:01 | Informe spam
Cesar,

Esa tabla tiene primary key?
Cuanto tiempo estas manteniendo esa transaccion abierta?
Dices que probastes con casi todos los niveles de IsolationLevel, donde
seteastes el nivel en la conexion o en el batch que ejecutas en sql server?.


AMB

"Cesar" wrote:

Tengo el siguiente problema y no me cuadra con lo que leo en la ayuda del SQL
Server 2000.
Hago el siguiente proceso en mi aplicacion:
1.- Me conecto la servidor con ADO.
2.- Inicio una transaccion.
3.- Ejecuto un insert en la TABLA 1.

Desde este mismo momento la TABLA 1 queda bloqueada completamente, y no
puedo hacer SELECT de ella, ni desde otras aplicaciones, ni desde el
Administrador Corporativo, ni desde en Analizador de consultas. Sólo se
libera cuando realizo el commit del transaccion.

Esta es la configuración de la conexión que estoy usando:
mObjADOConexion.CommandTimeout = iTimeOutProceso
mObjADOConexion.ConnectionString = pStrConexion
mObjADOConexion.ConnectionTimeout = iTimeOutConexion
mObjADOConexion.CursorLocation = adUseClient
mObjADOConexion.Properties("Prompt").Value = adPromptNever
Y he probado con casi todos los IsolationLevel.

¿Es normal esto en SQL Server 2000?.
Yo pensaba que la SELECT debería funcionar aunque no me apareciera el
registro insertado en la transacción, ya que aún no he realizado el commit.

Preguntas similares