Hola
Hay alguna manera de indicar q haga un Begin transaction pero de una tabla en espcífco y no de toda la bbdd? Esto es pq. quiero bloquear dos tablas pero el resto no para q los users puedan seguir trabajando con ellas
Gracias
| |||
Begin transaction tabla en particular? Hola Hay alguna manera de indicar q haga un Begin transaction pero de una tabla en espcífco y no de toda la bbdd? Esto es pq. quiero bloquear dos tablas pero el resto no para q los users puedan seguir trabajando con ellas Gracias |
| |||
Respuesta: Begin transaction tabla en particular? ME he mirado el tema de los bloqueos: http://sql-server-performance.com/Co...62/111966.aspx Este sería un ejemplo para bloquear tabla INSERT INTO TableA WITH (TABLOCK) ( propertyName ) SELECT DISTINCT propertyName from TableB WHERE propertyName NOT IN ( SELECT propertyName FROM TableA ) No lo h eprobado... Pero si pongo una transacción por el principio... no estoy bloqueando toda la bbdd de nuevo y no solo la tabla? |
| ||||
Respuesta: Begin transaction tabla en particular? En lugar de bloquear TODA LA TABLA, bloquea por registro ROWLOCK, pero insisto, debes contemplar el begin tran, porque de lo contrario, ¿como harias tu rollback en caso de tener la necesidad?
__________________ MCTS Isaias Islas |
| |||
Respuesta: Begin transaction tabla en particular? "En lugar de bloquear TODA LA TABLA, bloquea por registro ROWLOCK, pero insisto, debes contemplar el begin tran, porque de lo contrario, ¿como harias tu rollback en caso de tener la necesidad?" Me voy ha explicar lo mejor que pueda... Lo que quiero es bloquear toda la tabla pq. es una tabla de cabecera de ftas y detalle de ftas Si hay error al insertar en detalle o cabecera no quiero que haga nada con ninguna de esas tablas y dejarla como estaba para que el próximo user q inserte se la encuentre como si no hubiera pasado nada. Si bloqueo solo el registro no me funcionaría así entiendo... no? PERO el resto de tablas de la base de datos se deben poder seguir usando (socios, nominas, etc..) por eso quiero bloquear solo una tabla. Entiendo (no lo se he?) que si hago begin trans me bloqueará toda la base de datos y no salvaré mi problema... me equivoco? Hay manera de decirle 'inicia transacción pero solo de esta tabla y no me bloquees la base de datos'... he leido algo de isolated pero esto se me escapa a mi conocimiento ya Gracias |
| |||
Respuesta: Begin transaction tabla en particular? Quizas entendi mal. pero cuando yo realizo un procedimiento de insert de cabezera o detalle, me resguardo con un BEGIN TRAN... hago el insert completo y si no tengo error alguno, le doy un Commit, en el caso de que tenga un error, lo rescato y le doy un ROLLBACK, asi las tablas vuelven a quedar como estaban antes de realizar las transacciones que estan dentro del BEGIN TRAN... Si es eso lo que quieres, he ahi tu respuesta... |
| |||
Respuesta: Begin transaction tabla en particular? Garilax ... si pero BEGIN TRAN... bloquea toda la base de datos (juraría) y yo solo quiero hacer un BEGIN TRAN a nivel de tabla para que el resto de usuarios si hay que insertar 1000 facturas con sus detalles puedan seguir trabajando y no esperar a que acabe la sql del BEGIN TRAN... |
| |||
Respuesta: Begin transaction tabla en particular? En ese caso no se me ocurre otra cosa que darle un (nolock) a las tablas con las cuales seguiras trabajando... pero creo que no seria efectivo al momento de aplicarlo en un software esperando 10 minutos a que se suban X registros para uqe el resto del software pueda seguir trabajando con las tablas... :/ |
| ||||
Respuesta: Begin transaction tabla en particular? De acuerdo con Garilax, el BEGIN TRAN no BLOQUEA TODA LA BASE, simplemente ABRE UNA TRANSACCION en linea. Si hay mas transacciones por completarse, estas, entran en una "cola de espera". La logica de las transacciones, es que estan deben ser completadas en el tiempo mas corto posible.
__________________ MCTS Isaias Islas |
| |||
Respuesta: Begin transaction tabla en particular? "De acuerdo con Garilax, el BEGIN TRAN no BLOQUEA TODA LA BASE, simplemente ABRE UNA TRANSACCION en linea."..... No bloquean toda la BBDD?.. hubiera jurado que si.. pero si bloquea la tabla sin necesidad del TABLOCK donde se realiza la transacción no? |
| ||||
Respuesta: Begin transaction tabla en particular? Se debe comprender que cuando se hace uso del TABLOCK, se bloque AL TABLA(s) POR COMPLETO y hasta en tanto, no se quite dicha restriccion, nadie mas, pero nadie mas, puede hacer un simple SELECT sobre dichas tablas. Saludos
__________________ MCTS Isaias Islas |
Etiquetas: |