OVH Cloud OVH Cloud

variables utilisateur

3 réponses
Avatar
loutox
Bonjour à tous
venant de vba et access, je debute avec sql server et T-sql.

Je cherche à memoriser; d'une maniere ou d'une autre, des variables
associées à l'utilisateur(celui qui execute un pgm client).

Je souhaiterais par exemple memoriser dans sqlserver (via une table ou T-sql
si celui ci permet des variables globales ou un autre moyen ) les parametres
[DateDebut] et [DateFin] qui changeront au cours de l'execution du programme
client et ne seront pas les memes pour les differents utilisateur (si jean,
martine et pierre sont connectés à la base, la valeur des parametres ne sera
pas la meme pour chacun d'entre eux)

Y a-t-il, par exemple, un identifiant de la session qui est unique pour
chaque client connecté ? Ce qui me permettrait de stocker mes variables dans
une table dont l'un des champs contiendrait cet identifiant ?

Esperant avoir été clair.
Bonne journée.
Loutox.

3 réponses

Avatar
gploquin
La variable système @@spid contient l'identifiant du processus en cours
d'exécution.
(c'est le spid qu'on voit quand on fait sp_who)
Ex:
si Jean exécute un script du genre
insert into Suivi (process, datedebut, datefin) select @@spid, getdate(), Null
il aura son propre process id, par ex 70

si martine exécute ce même script, elle obtiendra son propre process id, par
ex 75

Attention, ceci n'est valable que pour la session. Dès que Jean se sera
déconnecté, le process 70 pourra être utilisé par quelqu'un d'autre.
Si vous voulez savoir après coup que c'était Jean à ce moment-là, il faut
ajouter une info dans votre table de suivi, par exemple le nom de
l'utilisateur connecté (accessible dans le T-SQL par la fonction user_name()
) ou son id (user_id()).

Cela répond-il à votre besoin ?
Bonne journée !

"loutox" a écrit :

Bonjour à tous
venant de vba et access, je debute avec sql server et T-sql.

Je cherche à memoriser; d'une maniere ou d'une autre, des variables
associées à l'utilisateur(celui qui execute un pgm client).

Je souhaiterais par exemple memoriser dans sqlserver (via une table ou T-sql
si celui ci permet des variables globales ou un autre moyen ) les parametres
[DateDebut] et [DateFin] qui changeront au cours de l'execution du programme
client et ne seront pas les memes pour les differents utilisateur (si jean,
martine et pierre sont connectés à la base, la valeur des parametres ne sera
pas la meme pour chacun d'entre eux)

Y a-t-il, par exemple, un identifiant de la session qui est unique pour
chaque client connecté ? Ce qui me permettrait de stocker mes variables dans
une table dont l'un des champs contiendrait cet identifiant ?

Esperant avoir été clair.
Bonne journée.
Loutox.





Avatar
loutox
Cela a l'air très bien, merci beaucoup de votre réponse.
est-ce une maniere de faire utilisée par ceux qui ont une bonne pratique ?

Bonne soirée.
Loutox

"gploquin" a écrit dans le message de
news:
La variable système @@spid contient l'identifiant du processus en cours
d'exécution.
(c'est le spid qu'on voit quand on fait sp_who)
Ex:
si Jean exécute un script du genre
insert into Suivi (process, datedebut, datefin) select @@spid, getdate(),
Null
il aura son propre process id, par ex 70

si martine exécute ce même script, elle obtiendra son propre process id,
par
ex 75

Attention, ceci n'est valable que pour la session. Dès que Jean se sera
déconnecté, le process 70 pourra être utilisé par quelqu'un d'autre.
Si vous voulez savoir après coup que c'était Jean à ce moment-là, il faut
ajouter une info dans votre table de suivi, par exemple le nom de
l'utilisateur connecté (accessible dans le T-SQL par la fonction
user_name()
) ou son id (user_id()).

Cela répond-il à votre besoin ?
Bonne journée !

"loutox" a écrit :

Bonjour à tous
venant de vba et access, je debute avec sql server et T-sql.

Je cherche à memoriser; d'une maniere ou d'une autre, des variables
associées à l'utilisateur(celui qui execute un pgm client).

Je souhaiterais par exemple memoriser dans sqlserver (via une table ou
T-sql
si celui ci permet des variables globales ou un autre moyen ) les
parametres
[DateDebut] et [DateFin] qui changeront au cours de l'execution du
programme
client et ne seront pas les memes pour les differents utilisateur (si
jean,
martine et pierre sont connectés à la base, la valeur des parametres ne
sera
pas la meme pour chacun d'entre eux)

Y a-t-il, par exemple, un identifiant de la session qui est unique pour
chaque client connecté ? Ce qui me permettrait de stocker mes variables
dans
une table dont l'un des champs contiendrait cet identifiant ?

Esperant avoir été clair.
Bonne journée.
Loutox.







Avatar
gploquin
Est-ce une bonne pratique de suivre les accès des utilisateurs ? ;-)
Sérieusement, je m'en suis déjà servi dans des applications professionnelles
avec Sybase ASE (même syntaxe qu'avec SQL Server), mais je ne sais pas s'il y
a des pratiques plus académiques. D'ailleurs, s'il y en a, ça m'intéresse !
(moi aussi, je "débute" avec SQL Server)

Bon week-end !

"loutox" a écrit :

Cela a l'air très bien, merci beaucoup de votre réponse.
est-ce une maniere de faire utilisée par ceux qui ont une bonne pratique ?

Bonne soirée.
Loutox

"gploquin" a écrit dans le message de
news:
> La variable système @@spid contient l'identifiant du processus en cours
> d'exécution.
> (c'est le spid qu'on voit quand on fait sp_who)
> Ex:
> si Jean exécute un script du genre
> insert into Suivi (process, datedebut, datefin) select @@spid, getdate(),
> Null
> il aura son propre process id, par ex 70
>
> si martine exécute ce même script, elle obtiendra son propre process id,
> par
> ex 75
>
> Attention, ceci n'est valable que pour la session. Dès que Jean se sera
> déconnecté, le process 70 pourra être utilisé par quelqu'un d'autre.
> Si vous voulez savoir après coup que c'était Jean à ce moment-là, il faut
> ajouter une info dans votre table de suivi, par exemple le nom de
> l'utilisateur connecté (accessible dans le T-SQL par la fonction
> user_name()
> ) ou son id (user_id()).
>
> Cela répond-il à votre besoin ?
> Bonne journée !
>
> "loutox" a écrit :
>
>> Bonjour à tous
>> venant de vba et access, je debute avec sql server et T-sql.
>>
>> Je cherche à memoriser; d'une maniere ou d'une autre, des variables
>> associées à l'utilisateur(celui qui execute un pgm client).
>>
>> Je souhaiterais par exemple memoriser dans sqlserver (via une table ou
>> T-sql
>> si celui ci permet des variables globales ou un autre moyen ) les
>> parametres
>> [DateDebut] et [DateFin] qui changeront au cours de l'execution du
>> programme
>> client et ne seront pas les memes pour les differents utilisateur (si
>> jean,
>> martine et pierre sont connectés à la base, la valeur des parametres ne
>> sera
>> pas la meme pour chacun d'entre eux)
>>
>> Y a-t-il, par exemple, un identifiant de la session qui est unique pour
>> chaque client connecté ? Ce qui me permettrait de stocker mes variables
>> dans
>> une table dont l'un des champs contiendrait cet identifiant ?
>>
>> Esperant avoir été clair.
>> Bonne journée.
>> Loutox.
>>
>>
>>