Eroarea <MS SQL Server – Principal “utilizator” is not able to access the database “nume_baza_de_date” under the current security context.> provine de la Management Studio care in momentul in care incearca sa obtina lista bazelor de date de pe server, incearca sa “aduca” si cateva informatii aditionale (executand o interogare T-SQL pentru care nu are suficiente drepturi de securitate), printre ele si “Collation”. Aceasta informatie nu poate fi disponibila decat utilizatorilor care au acces la baza de date. Cu alte cuvinte, daca un utilizator nu are acces la toate bazele de date este foarte posibil sa intalneasca eroarea prezentata pentru ca Management Studio incearca sa aduca informatii aditionale despre toate bazele de date. Pentru a ocoli acest comportament se deschide Management Studio, se deschide fereastra ObjectExplorer), se intra in “Databases” iar apoi se da click cu butonul din dreapta al mouse-lui pe capul de tabel. Se debifeaza Collation si se apasa refresh. Aceasta comportament tine cont numai de Management Studio si se manifesta numai daca exista baze de date neaccesibile pt. utilizatorul care se conecteaza la server.
Archive for the ‘Management Studio’ Category
MS SQL Server – Principal “utilizator” is not able to access the database “nume_baza_de_date” under the current security context.
Scris de Catalin Dumitru pe 25/08/2009
Publicat în Management Studio, SQL Server, eroare | Etichetat: eroare, error, Management Studio | Lasă un comentariu »
Executarea de interogari peste mai multe servere (multiple server query execution).
Scris de Catalin Dumitru pe 08/01/2009
SQL Server permite executarea de script-uri peste mai multe servere fara a fi necesara schimbarea conexiuni si rerularea sciptului. Pentru a intelege mai bine despre ce este vorba, am sad au un exemplu: vrem sa rulam un script in contextul mai multor baze de date aflate pe servere diferite. Avem mai multe solutii insa spre exemplificare am sa ofer numai una: scriptul respective il putem salva ca procedura stocata in fiecare din bazele de date, fiecare server sa-l adaugam ca linked server intr-o instanta separate de SQL Server iar in aceasta instant sa cream o noua procedura care executa procedura create mai devreme pe fiecare server. Principalul dezavantaj este acela ca daca avem nevoie sa modificam procedura stocata, va trebui facut deployment pe fiecare server in parte. Aici ne putem ajuta de executarea de interogari asupra mai multor servere sau mai bine zis asupra unui grup de servere. Vom crea un grup de servere, vom adauga serverele in grup si apoi vom executa scriptul. Pentru aceasta deschidem Management Studio iar apoi pentru a crea un grup de servere putem apasa combinatia de taste CTRL+ALT+G sau mergem in meniul VIEW de unde alegem Registered Servers. Click dreapta pe Local Server Groups si vom selecta New Server Group, introducem denumirea noului grup. Click dreapta pe Local Servers Groups si alegem New Registration Server Registration. In fereastra nou deschisa selectam instant pe care vrem sa o adaugam in grup, setam elementele de securitate si numele instantei eventual si descrierea iar apoi din tab-ul Connection Properties trebuie sa selectam baza de date in al carei context se va executa scriptul. Repetam acesti pasi pentru fiecare server. Dupa ce am adaugat toate instantele de SQL Server suntem gata sa executam scriptul. Click dreapta pe denumirea grupului si alegem New Query. In fereastra deschisa vom scrie:
SELECT DB_NAME() AS BazaDeDateContextuala
Acesta interogare va avea ca efect afisarea bazei de date curente, veti observa ca desi in interogare este o singura coloana, rezultatul va avea 2 coloane si anume coloanele “Server Name” si “bazaDeDateContextuala” iar rezultatul rularii va contine randuri pentru fiecare server in parte (denumirea server-ului de unde vin randurile este trecuta in prima coloana)
Publicat în Management Studio, SQL Server | Etichetat: Management Studio, SQL Server | Lasă un comentariu »