Šta su "orphaned" korisnici u SQL Serveru
Ponekad nakon restorovanja baze moguće da ne postoji login id ili lozinka koji su pridruženi korisniku. Ovo je moguće čak iako postoji login id koji odgovara imenu korisnika, ali njihovi GUID (Microsofto ovo zove SID) je drugačiji. Ovi korisnici su "orphaned" korisnici.
Kada restorujete Microsoft SQL Server bazu podataka na drugu mašinu ne možete pristupiti bazi sve dok se ne podese prava i privilegije.
Sve instrukcije navedene ispod je potrebno da se izvršavaju pod nalogom administratora baze sa selektovanom bazom.
Kako pronaći "orphaned" users in SQL Server?
Potrebno je da pokrenete sledeću uput u bazi:
EXEC sp_change_users_login 'REPORT'
Ovaj primer će prikazati sve orphaned korisnike u trenutnoj bazi sa njihovim security identifikatorima.
Kako rešiti problem sa "orphaned" SQL Server korisnicima?
Postoji nekoliko načina kako rešiti problem sa "orphaned" korisnicima u SQL Serveru:
1. Način - Obrišite korisnika iz baze:
Security > Users > Right click on the user > Delete
Mapirajte korisnika na bazu iz logins:
Security > Logins > right click on the login > Properties > User Mapping > Select (checked) database in Users mapped to this login part > choose desired roles for the user in Database role membership > Click OK
Ovaj proces zapravo uklanja restorovanog korisnika i mapira postojeći login na bazu.
2. Način - Mapiranje postojećeg korisnika u bazi sa Microsoft SQL Server loginom koristeći upit:
EXEC sp_change_users_login 'Update_One', 'DB_Username', 'Login_Username'
3. Način - Ako već imate login id i lozinku sa korisnika, pokušajte sa sledećim upitum:
EXEC sp_change_users_login 'Auto_Fix', 'user'
4. Način - Ako želite da kreirate novi login id i lozinku za korisnika pokrenite upit:
EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'
Kako rešiti problem sa orphaned dbo SQL Server korisnikom?
Kada pokušavate da rešite probleme koristeći sp_change_users_login može da se pojavi greška koja kaže "dbo is a forbidden value for the login name parameter in this procedure". Dakle, ukoliko je vlasnik baze (dbo) izlistan kao orphaned, pokrenite kod ispod nad bazom:
EXEC sp_changedbowner 'sa'