Question

Je crée un mécanisme SQL (dans MSSQL 2005) qui permet à un seul utilisateur à la fois le champ dans une certaine table. Si ce champ est défini, personne d'autre ne peut l'effacer (défini sur NULL). Sinon, ce champ est défini sur something unique for the user's session. En tant que bon candidat master.dbo.sysprocesses.sid me regarde, mais je n'en suis pas sûr.

Je dois m'assurer que lorsque l'application client de l'utilisateur (qui utilisera ce mécanisme) se bloque, le champ sera effacé afin que un autre utilisateur puisse l'utiliser. Je pense à un travail de compensation, qui vérifiera si la session de l'utilisateur qui définit ce champ est encore active et sinon, effacez-la (bien sûr que lorsque le champ n'est pas nul).

Existe-t-il une colonne unique dans Master.dbo.Sysprocesses pour chaque session utilisateur sans réutiliser la même valeur plus tard?

Merci beaucoup

Était-ce utile?

La solution

SPID identifie toute connexion / session. Ni plus ni moins. Aucune autre session n'aura cette épid.

Et vous pouvez utiliser @@ Spid pour cela plutôt plutôt que les systèmes.

Edit: Sid n'est pas unique car un utilisateur peut avoir plusieurs sessions en cours.

Je pense que nous avons besoin de plus d'informations pour proposer une suggestion.

Je crains que votre application ne s'écrase assez souvent pour avoir besoin de cette solution pour effacer un verrouillage exclusif ...

Edit2: Login_time serait également utilisable en fonction des commentaires

Autres conseils

Une arpieuse n'est pas unique. Parfois, je vois 10 Spids ou plus égaux sur mon serveur (cela se produit à cause du parallélisme).

Essayez Spid + KPID.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top