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

[SOLUCIONADO] Concurrencia timestamp

Estas en el tema de Concurrencia timestamp en el foro de SQL Server en Foros del Web. Buen día, Necesito su ayuda, alguien me puede decir o dar alguna idea de como se utiliza la columna de timestamp para veerificar que no ...
  #1 (permalink)  
Antiguo 27/08/2015, 08:40
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 6 años, 11 meses
Puntos: 2
Pregunta Concurrencia timestamp

Buen día,


Necesito su ayuda, alguien me puede decir o dar alguna idea de como se utiliza la columna de timestamp para veerificar que no exista concurrencia???

Como se compara antes actualizar porfa!!


Gracias!!
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....
  #2 (permalink)  
Antiguo 27/08/2015, 08:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Concurrencia timestamp

¿Qué tiene que ver una columna TIMESTAMP de una tabla con la concurrencia?
Explica un poco el contexto de tu problema porque no veo la relación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 27/08/2015, 09:19
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 6 años, 11 meses
Puntos: 2
Respuesta: Concurrencia timestamp

Según lo que he leido en la red,

el timestamp es una columa de solo lectura y que se actualiza en automático, hice unas pruebas con insercion y al convertir este tipo de dato en bigint, muestra tipo una version del registro....

En la parte que estoy ahorita es en base a que cambia este valor? Esto me puede ayudar en la concurrencia, para evitar que dos usuarios o más usen el mismo registro al mismo tiempo

¿¿¿¿Me explico?????
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....
  #4 (permalink)  
Antiguo 27/08/2015, 10:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Concurrencia timestamp

La concurrencia se maneja por transacciones, no simplemente por columnas de ese tipo. No es el modo de controlar la concurrencia, y francamente no creo que estés leyendo la documentación adecuada de SQL Server.
Este es el manual oficial que describe que es, como se usa y para qué sirve un TIMESTAMP: https://technet.microsoft.com/es-ar/...ql.110%29.aspx

Ese mismo articulo tiene una nota intersante respecto a ese tipo de dato en el uso de transacciones:

Cita:
Cuando se revierte alguna transacción o se producen errores en alguna validación, el contador de rowversion no se puede restablecer al valor anterior. Esto se prohíbe debido a que si al mismo tiempo se producían otras transacciones, el restablecimiento del contador podría causar problemas. Para obtener el valor actual de rowversion, puede consultarlo mediante @@DBTS. Durante la replicación de SQL Server a SQL Server Compact o viceversa las columnas timestamp no se replican de una base de datos a otra. Esto ayuda a garantizar la unicidad de timestamp. Un valor copiado puede estar en conflicto con un valor existente de alguna fila de datos o con algún valor futuro.
Por otro lado, el recurso de administración de la concurrencia dependerá mucho del lenguaje de programación usado, hay algunas distinciones a realizar dependiendo de qué herramientas uses.

El tema de ACID y la concurrencia no es menor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/08/2015, 10:28
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 6 años, 11 meses
Puntos: 2
Respuesta: Concurrencia timestamp

Ok gracias por la respuesta la verdad nunda he manejado la concurrencia entonces por eso ando investigando ya que requiero urgentemente de esto....

El lenguaje que uso es .NET XAML WPF, SQL Server...


Podrías darme alguna idea de como manejarlo, lo requiero para las ventas, necesito que cuando una venta se esta consultando no se bloquee, pero cuando se comience a editar este registro quede bloqueado para otros usuarios..

Al igual que para el inventario...

Pense en hacerlo de forma manual, por código, pero quiero suponer que hay algo mas facil rapido y eficiente???

alguna idea o tip que me des porfa?
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....
  #6 (permalink)  
Antiguo 27/08/2015, 12:26
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 12 años, 5 meses
Puntos: 180
Respuesta: Concurrencia timestamp

Yo tenia 560 usuarios concurrentes en una base de datos, todos tenían un ID (de empleado), aclaro, esto fue en la versión 7.0 de SQL Server.

¿Cómo evitar la concurrencia?

Se me ocurrió colocar un cambio ID en los registros y actualizar este ID con el numero del empleado, cuando este, tuviera el registro.

Así nunca tenia 2 empleados procesado el mismo registro, además de que si el empleado dejaba "a la mitad de proceso" dicho registro, siempre le mandaba el mismo registro hasta concluirlo.

Estamos hablando de un ambiente de CALL CENTER.
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 27/08/2015, 13:20
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.411
Antigüedad: 13 años, 3 meses
Puntos: 774
Respuesta: Concurrencia timestamp

y porque no investigas sobre los diferentes niveles de aislamiento que ofrece sql server, estos son para manejar la concurrencia, si quieres que se bloqueen los registros en cada transaccion, que se pueden hacer dirty read, phantom reads etc...
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 28/08/2015, 08:38
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 6 años, 11 meses
Puntos: 2
Respuesta: Concurrencia timestamp

Cita:
Iniciado por iislas Ver Mensaje
Yo tenia 560 usuarios concurrentes en una base de datos, todos tenían un ID (de empleado), aclaro, esto fue en la versión 7.0 de SQL Server.

¿Cómo evitar la concurrencia?

Se me ocurrió colocar un cambio ID en los registros y actualizar este ID con el numero del empleado, cuando este, tuviera el registro.

Así nunca tenia 2 empleados procesado el mismo registro, además de que si el empleado dejaba "a la mitad de proceso" dicho registro, siempre le mandaba el mismo registro hasta concluirlo.

Estamos hablando de un ambiente de CALL CENTER.

En realidad implemente algo parecido....

Use un campo dentro de la tabla tipo timestamp (el cual guarda un arreglo de bytes y automaticamente sql asigan un valor cuando se da de alta o se hace un update al registro).

Dentro de mi aplicación:
  • Al abrir el registro de venta obtenengo el valor del timestamp del registro
  • Al momento de dar clic en guardar, hago un refresh a mi instancia de la bd (uso LINQ)
  • Obtengo nuevamente el valor del timestamp del registro
  • Valido que mi timestamp al elegir la venta sea igual al de después del refresh
  • Si son iguales no han modificado el registro, si son diferentes mando una alerta de que la venta ha sido modificada.

Este proceso lo hago tambien para inventario, ya que a veces vendian el mismo producto al mismo tiempo...

Es algo parecido a lo que tu haces....

Gracias!!!!
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....
  #9 (permalink)  
Antiguo 28/08/2015, 08:39
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 6 años, 11 meses
Puntos: 2
Respuesta: Concurrencia timestamp

Cita:
Iniciado por Libras Ver Mensaje
y porque no investigas sobre los diferentes niveles de aislamiento que ofrece sql server, estos son para manejar la concurrencia, si quieres que se bloqueen los registros en cada transaccion, que se pueden hacer dirty read, phantom reads etc...

Gracias por darme ideas, investigare sobre este tema por que si lo considero indispensable, sin embargo la solución que utilice ahorita fue de emergencia debido a que se requeria implementar para hace una semana como todo :)

Buscare por ese lado. Thanks!
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....
  #10 (permalink)  
Antiguo 28/08/2015, 08:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Concurrencia timestamp

No inventes la rueda de nuevo.
Las Bases de Datos solucionaron tu problema hace más de tres décadas. Lo que tienes que hacer es aprender a usar las herramientas que te proveen, no crear métodos que son "parches", y que luego te metan en cuellos de botella irresolubes.

Estudia lo que te sugieren antes de avanzar un paso mas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 28/08/2015, 08:54
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 6 años, 11 meses
Puntos: 2
Respuesta: Concurrencia timestamp

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No inventes la rueda de nuevo.
Las Bases de Datos solucionaron tu problema hace más de tres décadas. Lo que tienes que hacer es aprender a usar las herramientas que te proveen, no crear métodos que son "parches", y que luego te metan en cuellos de botella irresolubes.

Estudia lo que te sugieren antes de avanzar un paso mas.

Buen punto acepto que tienes razón, podrías decirme cuales herramientas me ayudan en esto?
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....
  #12 (permalink)  
Antiguo 28/08/2015, 09:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Concurrencia timestamp

Ya te las han dicho: ACID, transacciones.
Cuando en este rubro uno dice la palabra "herramientas" se refiere no sólo a programas, sino fundamentalmente a los recursos que el DBMS (SQL Server en este caso) tiene para permitir ese tipo de acciones.

Transacciones


Entendiendo Locking en SQL Server

Guía de versiones de fila y bloqueo de transacciones de SQL Server
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 28/08/2015, 09:23
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 6 años, 11 meses
Puntos: 2
Respuesta: Concurrencia timestamp

Justo sobre eso estoy leyendo ahorita,

No se que tanto pueda aplicarlo debido a que la aplicación que manejo esta en XAML, con MVC,
y la base de datos esta mapeada dentro de la aplicación, por lo tanto no utilizo procedimientos almacenados para altas ni modificaciones, esto se hace directo en la App....

Y por lo que entiendo esto es a nivel BD, transacciones, procedimientos, supongo que estas herramientas que mencionas no las podría aplicar de esta forma...

Gracias por la respuesta si pudieran darme una opción mas les agradeceria ;)
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....
  #14 (permalink)  
Antiguo 28/08/2015, 09:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Concurrencia timestamp

¿Tienes C#.Net en la capa de negocio, o la de acceso a datos?
Desde el lenguaje se acceden a las capacidades del SQL Server... Normalmente es transparente .
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 28/08/2015, 09:47
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 6 años, 11 meses
Puntos: 2
Respuesta: Concurrencia timestamp

Gracias si revisaré esta partes,

Si se que se acceden a los manejadores de BD, también se que al decir "herramientas" no se refieren unicamente a programas..., la aplicación, como en muchos casos no fue desarrollada por mi y por lo tanto no esta diseñada la BD como a mi me gustaría....

Sin embargo veremos que puedo hacer! Thank you!
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....
  #16 (permalink)  
Antiguo 28/08/2015, 11:04
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 6 años, 11 meses
Puntos: 2
Respuesta: Concurrencia timestamp

Dejo este link por si a alguien le sirve:

http://blogs.msdn.com/b/alexj/archiv...framework.aspx
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....

Etiquetas: concurrencia, timestamp
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 17:05.