Newsgroup: it.comp.lang.visual-basic
Titolo: Gestione accesso utenti (SQL SERVER)

Salve Gente,
mi sto accingendo a scrivere un programma multiutente utilizzando come
db MSDE (1.0 o 2000)
Normalmente, utilizzando Access, mi creavo una tabella nel DB in cui
memorizzavo nome utente e password per identificare l'utente e
decidere cosa poteva fare o meno.
Adesso, utilizzando SQL Server, vorrei utilizzare il suo sistema di
login, ma in nessun libro e anche in rete (forse cerco male:( ), o
trovato esempi che mi illustrassero come creare accessi diversi ai
singoli utenti. L'unica cosa trovata è la stringa di connessione (ADO)
per entrare con un determinato utente, ma non come determinare che
privilegi a quest'utente.
Mi spiego: 
Con la tabella tradizionale che ho sempre usato, quando si loggava un
utente, verificavo in che gruppo era e di conseguenza abilitavo o meno
alcuni menu'.
Con SQL Server, come posso ottenere le stesse cose utilizzando il suo
sistema di login?
Quello che ho capito e che posso decidere se l'utente puo'
inserire/visualizzare etc... ma il programma come fa a stabilire i
permessi che sono concessi all'utente all'avvio dell'applicazione?
Un ultima cosa:
In cosa è meglio MSDE1.0 (SQL 7) rispetto a MSDE2000 (SQL2000) tenuto
conto che per il 7 ho SQL7 developer edition fornito con VB6 pro,
mentre per il 2000 non ho nulla ma solo office xp?
Vi sarei grato se mi indicaste un esempio/URL che puo' chiarirmi le
idee.
Molto Grazie.
Fabio

 
SQL server non sa che esiste un programma che lo chiama !
questo e' un concetto importante da tenere in conto, MSDE e' un RDBMS (
forse solo DBMS ) il suo lavoro e' fornire l'accesso a dei dati quindi i
permessi sono limitati a questo e basta ( poi configurare
lettura/modifica di tabelle esecuzioni di stored procedures ... ) .
eventuali configurazione dinamiche dell'applicazione client sono a
carico della stessa ( e del programmatore che la crea ! ) per cui ti
ticchera' comunque ricorrere alla  tecnica che usavi precedentemente (
ma postresti usare file ini o file di testo con le configurazioni  ....
)

)
Grazie per la risposta :))
vediamo se ho capito:
creo un utente per ogni programma che scrivo e do' i privilegi di SQL
server secondo cosa deve fare il programma. Poi il programma darà le
sue  funzionalità in funzione di una propria gestione degli utenti.
Ho capito??
Grazie


NO (o forse non ho capito io ... )
allora:
MSDE ( o un qualsiasi DBMS ) ha la possibilita' di definire utenti (
ovvero entita' che possono accedere ai dati che conserva ), a queste
entita' e' possibile dare dei 'privilegi' leggi "la possibilita' di"
usare gli oggetti del DBMS : database tabelle, procedure viste in
maniera selettiva.
puoi per esempio inibire la scrittura in una tabella ad un utente ....
al DBMS non interessa l'utente come usa questi dati ovvero non gli
interessa che l'utente li visualizza con questo o quel programma.
SE vuoi che il programma client deve mostrarsi ai vari utenti, questa
volta del client, in maniera diversa ( menu differenti, funzionalita'
abilitate o no  .... ) questo va fatto a manina.
ovvero , in pratica, con la stessa tecnica che usavi con l'.mdb (
tabella ausiliaria con le informazioni di configurazione del client
secondo i vari utenti )

secondo i vari utenti )
Grazie molte.
Ho capito il tutto :=)
L'unica cosa che non mi piace molto è il fatto che gli utenti devono
essere inseriti in 2 "posti" differenti, ovvero nella mia tabella
ad-hoc e nella gestione degli utenti di SQL server. 

 ad-hoc e nella gestione degli utenti di SQL server.
Infatti, solitamente, io uso una tecnica più controllabile:
1) l'applicativo apre le connection al database usando 1 o più utenti
"standard"
    (per. es  "Full", "Read-Only", "Deny" cui sono associate proprietà
"generiche"
    di read-write, read-only, deny login o eventualmente altre)
2) Ogni Utente dell'applicativo ha un suo login alla tabella utenti ove
vengono definite in ambito strettamente applicativo le permission alle
varie funzionalità.
ciao
ugo

ugo
ESATTAMENTE quello che avevo in mente :))))
Allora la strada è quella giusta !!!
GRAZIE