¿Qué columna de master.dbo.sysprocesses es única para la sesión?
-
28-10-2019 - |
Pregunta
Estoy creando un mecanismo SQL (en MSSQL 2005) que permite que solo un usuario a la vez establezca el campo en cierta tabla.Si este campo está configurado, nadie más puede borrarlo (establecido en NULL).De lo contrario, este campo se establece en something unique for the user's session
.Como un buen candidato me busca master.dbo.sysprocesses.sid
, pero no estoy seguro de ello.
Necesito asegurarme de que cuando la aplicación cliente del usuario (que utilizará este mecanismo) falle, el campo se borrará para que otros usuarios puedan utilizarlo.Estoy pensando en un trabajo de limpieza, que verificará si la sesión del usuario que configuró este campo aún está activa y, de lo contrario, la borrará (por supuesto, solo cuando el campo no sea NULL).
¿Existe una columna única en master.dbo.sysprocesses para cada sesión de usuario sin reutilizar el mismo valor más adelante?
Muchas gracias
Solución
spid identifica cualquier conexión / sesión.Ni mas ni menos.Ninguna otra sesión tendrá ese spid.
Y puede usar @@ SPID para eso en lugar desysprocesses.
Editar: sid no es único porque un usuario puede tener varias sesiones en curso.
Creo que necesitamos más información para ofrecer una sugerencia.
Me preocupa que su aplicación se bloquee con la frecuencia suficiente como para necesitar esta solución para eliminar ese bloqueo exclusivo ...
Edit2: login_time también se podría utilizar según los comentarios
Otros consejos
Un spid no es único.A veces veo 10 o más spids iguales en mi servidor (sucede debido al paralelismo).
Pruebe spid + kpid.