In SQL Server exista doua nivele de autentificate si autorizare:
- 'server principals', numitzi si 'login', care sint autentificati de catre instanta de SQL Server. SQL poate autentifica un 'login' fie folosind Windows Auth sau un nume/parola. Authorizarile care se pot aplica la login se refera numai la 'securables' (obiecte ce pot fi authorizate) la nivelul intregii instante: connectare la instanta, access la view-uri la nivelul instantei, access la baze de date individuale. Tabela de metadata care descrie 'server principals' este sys.server_principals (una pentru intreaga instanta)
- 'database principals' , numitzi si 'user', sint modul concret prin care un 'login' accesseaza o baza de date. Autentificarea unui user nu se bazeaza pe nici o schema de autentificare gen windows auth sau nume/parola, ci se bazeaza pe faptul ca instanta SQL Server a autentificat 'login'-ul si exista o mapare intre login si user (au acelasi SID). Un user poate fi authorizat pentru 'securables' la nivelul unei baze de date: drepturi de creare/accessare tabele, view-uri etc. Tabela de metadada care descrie 'database principals' este sys.database_principals (cite una in fiecare baza de date).
Deci pentru a resolva problema ta va trebui sa creezi atit un 'server principal' cit si un 'database principal'. De exemplu pentru a crea un login, un user corespunzator intr-o baza de date si al autoriza sa creeze tabele:
use [master];
go
create database [testdb];
go
begin transaction
create login [PopescuIon]
with password = 'Password#1234',
default_database = [testdb];
use [testdb];
create user [PopescuIon] from login [PopescuIon];
commit
go
use [testdb];
grant create table to [PopescuIon];
create table to [PopescuIon];go
In mod normal pentru useri interactivi trebuie specificata clauza MUST_CHANGE la parola (Express insa nu suporta clauza respectiva). Daca nu e vorba de useri interactivi, aproape sigur faptul ca vrei sa folosesti un user si parola este gresit.
Pentru sintaxa CREATE LOGIN sis CREATE USER: http://msdn2.microsoft.com/en-us/library/ms189751.aspx, http://msdn2.microsoft.com/en-us/library/ms173463.aspx
HTH,
~ Remus
http://rusanu.com