ver uncommitted transaction tablas tabla sirven read que para objetos los evitar eliminar ejemplo bloqueos bloqueo bloquear bloqueados sql database vb.net transactions locking

uncommitted - sql bloqueo de tablas



¿Cómo bloqueo ciertas filas de SQL mientras ejecuto un proceso en ellas? (4)

Probablemente desee establecer un nivel de aislamiento para toda la transacción en lugar de usar con (rowlock) en tablas específicas.

Mira esta página:
http://msdn.microsoft.com/en-us/library/ms173763.aspx

Específicamente, busque "bloqueo de fila" dentro de él y creo que encontrará que LEER COMPROMETIDA o REPETIBLE LEER es lo que quiere. LEA COMPROMETIDO es el valor predeterminado de SQL Server. Si LEER COMPROMETIDO no parece lo suficientemente fuerte para ti, entonces ve a REPEATABLE READ.

Actualización: después de leer una de sus publicaciones de seguimiento, definitivamente desea una lectura repetible. Eso mantendrá el bloqueo hasta que confirme o restituya la transacción.

Mi trabajo tiene una aplicación financiera, escrita en VB.NET con SQL , en la que varios usuarios pueden trabajar al mismo tiempo.

En algún momento, un usuario puede decidir publicar el lote de entradas en las que ellos (y posiblemente otras personas) están trabajando actualmente.

Obviamente, ya no quiero que ningún otro usuario agregue , edite o elimine entradas en ese lote una vez que se haya iniciado el proceso de publicación .

Ya he visto que puedo bloquear todos los datos abriendo la transacción SQL en el momento en que se inicia el proceso de publicación, pero el proceso puede ser bastante largo y preferiría no tener la transacción abierta durante los varios minutos que podría llevar completar la función .

¿Hay alguna manera de bloquear solo los registros que sé que necesitan ser operados desde el código VB.NET?


Si está utilizando Oracle, debería seleccionar para actualizar las filas que está bloqueando.

Aquí hay un ejemplo

SELECT address1 , city, country FROM location FOR UPDATE;



envuélvalo en un tran use un holdlock + updlock en el seleccionar

ejemplo

begin tran select * from SomeTable (holdlock,updlock) where .... processing here commit