Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Client/Server  Verificare logi...
 Verificare login multiplu
 
 9/4/2010 4:18:20 AM
User is offlinelmax25
57 posts


Verificare login multiplu
 (N/A)

Salut !

Spuneti-mi va rog o metoda buna pt a verifica daca acelasi user este conectat de mai multe ori la SQL Server.

Personal folosesc urmatoarea metoda :

Cind un user face login, dupa ce verific parola si nume user pe server actualizez un cimp sa zicem "conectat"=.T. Cind acel user face logout normal (iesire din program )actualizez "conectat"=.F. si teoretic nu pot intra 2 useri cu acelasi nume.

Problema apare cind dintr-un anume motiv (reset PC,etc) userul nu face logout normal din program, el ramine conectat deoarece nu se mai actualizeaza "conectat"=.F.

Ma intreb daca aceasta verificare se poate face cumva de pe server si daca da va rog spuneti-mi cum.

Va multumesc !

 9/4/2010 11:25:14 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Verificare login multiplu
 (N/A)
Vezi aici cum se face:
http://www.sqlservercurry.com/2008/02/how-to-find-out-users-logged-in-to-sql.html


Daniel Buduru
 9/4/2010 3:28:06 PM
User is offlinelmax25
57 posts


Re: Verificare login multiplu
 (N/A)
Si cum fac legatura intre userii din tabela mea si cei pe care mi-i genereaza select * from sys.sysprocesses ?
 9/4/2010 5:10:57 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Verificare login multiplu
 (N/A) Modified By Daniel Buduru  on 9/4/2010 5:12:28 PM)
Daca toti userii aplicatiei se logheaza cu acelasi login pe server, optiunile sunt mai limitate...
In acest caz, poti identifica userul doar dupa hostname (numele statiei de pe care s-a facut logarea), cu conditia ca hostname sa fie unic in retea.
Ce poti face e sa tii in tabela accea cu utilizatoerii si login_time, spid, sid, hostname, hostprocess - asa ar trebui sa poti asocia userul aplicatiei cu loginul pe server.
SPID si PID (hostprocess) nu sunt unice, serverul realoca SPID dupa deconectare, iar hostul realoca PID dupa restartare, dar toate acestea luate impreuna pot identifica destul de bine un user.


Daniel Buduru
 9/4/2010 6:21:04 PM
User is offlinelmax25
57 posts


Re: Verificare login multiplu
 (N/A)

Intr-adevar toti userii aplicatiei mele se logheaza cu acelasi login pe server.

Ma gindeam cumva daca se poate face vreun fel de timer pe server care sa trimita la un interval un mesaj catre toti userii care sint conectati cu "conectat"=.T. si in cazul in care acel user nu raspunde, sa modifice "conectat"=.F.

Ceva idei ?

 

 9/4/2010 7:07:25 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Verificare login multiplu
 (N/A)
O varianta ar fi sa creezi cate un user pe server pentru fiecare user al aplicatiei. Eventual folosind acelasi server login, simplificand astfel procesul.
Asta se poate face in cod, chiar intr-un trigger al tabelei de useri.
Apoi fiecare user foloseste propriul nume+parola pentru conectarea la server.
In acest mod poti trasa activitatea fiecarui user pe server, poti asocia operatiile asupra bazei de date (insert / update / delete) cu userul care le-a facut, iar asta din triggerele tabelelor.
Exista trigger si pentru logon, si poti actualiza tabela de useri din acest trigger. Vezi aici cate ceva http://msdn.microsoft.com/en-us/library/bb326598.aspx

Daca vrei sa lucrezi in continuare cu acelasi user pentru logare si sa-i gestionezi cu acea tabela, trebuie sa modifici un pic procedura.
La logare, in loc sa pui in tabela doar conectat=.t., selectezi informatiile din sys.sysprocesses cu comanda select * from sys.sysprocesses where spid=@@spid, stochezi in tabela login_time, spid, hostname, hostid.
Cand vrei sa verifici ce useri sunt logati, faci un join intre sys.sysprocesses cu join pe spid, host, hostname, login_time. In acealsi mod poti afla ce sesiuni (SPID) nu se regasesc in tabela ta de utilizatori, deci useri logati pe server care nu au fost inregistrati de aplicatie.
Last_batch tine data si ora ultimei comenzi executate pe acea conexiune

Nu iti recomand sa faci polling pe server (asa se numeste solutia cu interogareaperiodica) pentru nici un fel de informatie. Metoda corecta e de a folosi eventurile si triggrele.

Sql agent este aplicatia care executa taskuri programate pe server, dar nu este disponibil pentru versiunile express. Exista insa ceva aplicatii third-party.


Daniel Buduru
  Visual FoxPro  Client/Server  Verificare logi...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement