none
Problemas de concurrencia

    Question

  • Hola a todos!

    Quisiera que alguien me pusiera algún enlace o me hiciera una breve explicación sobre cómo solventar los problemas de concurrencia en SQL Server.

    Gracias por todo!!!

    Saturday, July 21, 2007 12:21 PM

Answers

  • A ver, las transacciones "concurrentes" se definen por lo que se conoce como Isolation Level (no sé como se diría eso en castellano, lo siento). Isolation Level dicta como una transacción se comporta frente a otra. Ese comportamiento lo puedes definir, habiendo en SQL 2005 varias opciones:

    - Read Uncommitted
    - Read Committed
    - Repeatable Read
    - Snapshot
    - Serializable

    El primero, también denominado Dirty Read permite leer datos antes de que se haga un commit sobre la transacción. Es decir, si por un lado establecer el valor de un campo, y antes de hacer un commit, de otro sitio lo lees, tomará ese valor. El segundo es lo contrario. Solo puede leer cuando se ha hecho el commit, con lo cual el segundo bloquearía esperando al primero terminar. Esto es el comportamiento por defecto. Esos dos son normalmente los más comunes que se utiliza. Para más información mira aquí

    http://msdn2.microsoft.com/en-us/library/ms173763.aspx


    Otra cosa. ADO.NET ofrece otros niveles porque ten en cuenta que se tiene que poder trabajar con cualquier  tipo de base de datos, no solo SQL Server. Aunque los más comunes se repiten en ADO.NET


    Saturday, July 21, 2007 7:44 PM

All replies

  • ¿a que te refieres exactamente con problemas de concurrencia? ¿Transacciones concurrentes?
    Saturday, July 21, 2007 2:22 PM
  • Exactamente a eso me refiero.

     

    Gracias!!

    Saturday, July 21, 2007 2:29 PM
  • A ver, las transacciones "concurrentes" se definen por lo que se conoce como Isolation Level (no sé como se diría eso en castellano, lo siento). Isolation Level dicta como una transacción se comporta frente a otra. Ese comportamiento lo puedes definir, habiendo en SQL 2005 varias opciones:

    - Read Uncommitted
    - Read Committed
    - Repeatable Read
    - Snapshot
    - Serializable

    El primero, también denominado Dirty Read permite leer datos antes de que se haga un commit sobre la transacción. Es decir, si por un lado establecer el valor de un campo, y antes de hacer un commit, de otro sitio lo lees, tomará ese valor. El segundo es lo contrario. Solo puede leer cuando se ha hecho el commit, con lo cual el segundo bloquearía esperando al primero terminar. Esto es el comportamiento por defecto. Esos dos son normalmente los más comunes que se utiliza. Para más información mira aquí

    http://msdn2.microsoft.com/en-us/library/ms173763.aspx


    Otra cosa. ADO.NET ofrece otros niveles porque ten en cuenta que se tiene que poder trabajar con cualquier  tipo de base de datos, no solo SQL Server. Aunque los más comunes se repiten en ADO.NET


    Saturday, July 21, 2007 7:44 PM
  • Por acá hay un artículo que te puede ser de utilidad:

     

    http://sql.manivesa.com/Tutoriales+SQL/Programacion+.NET/278.aspx

     

    Saludos,

     

    Julio

    Sunday, July 22, 2007 8:22 PM
  • Gracias a los dos!!!
    Monday, July 23, 2007 10:27 PM
  • Hola Hadi Hariri :

     

    He visto tu respuesta sobre concurrencia y no se si entendi bien el mensaje, tal vez tu puedes ayudarme, lo que entendi es lo siguiente:

     

    Si ejecuto una transaccion "Transaccion 1" : en dicha transaccion leo y luego actualizo una tabla en donde llevo un correlativo, "Transaccion 1" leera el correlativo que sigue (ejemplo correlativo de tabla = 9 + 1 que es el siguiente = 10) y en el commit actualizara la tabla del correlativo a 10, si durante ese proceso ejecuto una "Trasanccion 2" esta transaccion no se efectuara hasta que termine la trasanccion 1 ¿? no se si asi esta bien y disculpen si utilizo como dicen "peras y manzanas" para la explicación pero es que asi se me facilita entender jejeje.

     

    Es que tuve un problema con un procedimiento en donde hacia algo similar a esto, pero en una ocasion dos usuarios me notificaron que a uno no se le guardaron sus datos y a otro si se le guardaron pero que se duplico el correlativo del registro.  Espero me puedan ayudar.

     

    Gracias por la respuesta y hasta pronto.

    Monday, August 06, 2007 4:59 PM