Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Transacciones restricciones tablas y registros

Estas en el tema de Transacciones restricciones tablas y registros en el foro de SQL Server en Foros del Web. Hola Este hilo es una mezcla de NET y sql pero tira más para sql... ahí va: Llevo horas leyendo y probando y aun no ...
  #1 (permalink)  
Antiguo 29/11/2011, 07:39
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 10 meses
Puntos: 0
Transacciones restricciones tablas y registros

Hola

Este hilo es una mezcla de NET y sql pero tira más para sql... ahí va:

Llevo horas leyendo y probando y aun no he sido capaz de resolver mi problema... Lo expongo a ver:

Estoy unsando transacciones para inserts, update y delete con NET de esta manera (la estandar):

SqlConnection con = new SqlConnection("Connection String");
SqlTransaction tr = con.BeginTransaction();
SqlCommand cmd = new SqlCommand("Update Account set Balance=500 where AccountId=52", con, tr);
try
{
cmd.ExecuteNonQuery();
tr.Commit();
}
catch (Exception exc)
{
tr.Rollback();
}
finally
{
con.Close();
}

EL problema es que MIENTRAS se ejecuta la transaccion me deja TODA la tabla bloqueada...esto no tiene ningún sentido. Lo que pretendo conseguir es:

- Cuando es insert : POder hacer otros inserts (por que no?), updates y deletes PERO q no se vean los registros insertados al hacer SELECT hasta que no hago el commit de la transacción

- Cuando es UPDATE: Poder hacer inserts , updates MENOS el que estoy trabajando y deletes PERO q no se vean lo cambios de mi UPDATE hasta que no hago el commit de la transacción

- Cuando hago delete: Poder hacer inserts, updates y deletes MENOS del que estoy borrando PERO q se vea el registro que voy ha borrar (pq. aun no he hecho el commit)



Para esto me he leído esto:

http://msdn.microsoft.com/es-es/library/ms173763.aspx

http://technet.microsoft.com/es-es/l.../ms187373.aspx



En teoría para el Insert (aun estoy en el primero ya véis) he probado:

connection.BeginTransaction(System.Data.IsolationL evel.Serializable, "SampleTransaction")

y luego al recuperar Select * from [Aules] WITH (nolock) pero esto me muestar los que aun no están en commit



A ver si alguien me dice que combinaciones de IsolationLevel y de restricción (es decir with) se ha de usar en cada caso

Gracias
  #2 (permalink)  
Antiguo 29/11/2011, 18:19
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Transacciones restricciones tablas y registros

Te sugiero algo, que te quitara muchos, muchos dolores de cabeza, OLVIDATE de manejar las transacciones desde la capa CLIENTE y cambialas a la BASE DE DATOS.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 30/11/2011, 03:07
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Transacciones restricciones tablas y registros

Por la BBDD es lo mismo
Ejecutar esto en una sql en el sql server para comprobar lo q digo:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
GO
BEGIN TRANSACTION;
GO
SELECT * FROM Tabla1
WAITFOR DELAY '00:00:15' ---espero 15 seg
GO
COMMIT TRANSACTION;
GO

Y luego intentar hacer una select normal... no la hace
SELECT * FROM Tabla1
  #4 (permalink)  
Antiguo 30/11/2011, 14:27
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Transacciones restricciones tablas y registros

Amig@, NO PUEDES (NO DEBES) utilizar indiscriminadamente la instruccion GO en tus codigos T-SQL, revisa en tu ayuda en linea que hace el GO
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 13/12/2011, 14:01
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Transacciones restricciones tablas y registros

El go no es el motivo por el cual la tabla queda bloqueada... si quito los go la tabla queda bloqueada igual hasta q acaba la transacción
el tema sigue abierto y sin respuesta
  #6 (permalink)  
Antiguo 13/12/2011, 21:25
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Transacciones restricciones tablas y registros

Las transacciones en la base de datos y en el cliente (que no se sugiere se hagan en esta capa), deben ser lo MAS CORTAS en tiempo posible.
__________________
MCTS Isaias Islas

Etiquetas: registro, registros, restricciones, select, sql, tabla, tablas, transacciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:30.