Merhaba,
Bugünki yazıda sizlere SQL Server üzeride bulunan orphaned user ( Yetim Kullanıcılar ) anlatacağım.
Öncelikli olarak orphaned user nasıl oluşabilir ?
SQL Server da Database Backup Restore sonrasıdan database üzerinde userlar orphaned durumuna gelebilir.Bunun sebebi ise userların SID uyuşmazlıklarıdır. Örnekle detaylandırayım.
LiveSrv ve TestSrv isimli iki tane SQL Serveriniz mevcut.
LiveSrv erişim yetkisi bulunan kullanıcılar : A,B
TestSrv erişim yetkisi bulunan kullanıcılar : A,C,D,E,F
Senaryo gereği LiveSrv’de bulunan SampleDB’yi TestSrv’ye restore etmemiz gerekemktedir. Bu senaryo dahilinde işlemi gerçekleştirdiğimizde B userı orphaned user durumda olmaktadır.
Orphaned User kontrol etmek için ;
Kod1
USE SampleDB go EXEC sp_change_users_login 'Report'
Orphaned userları SID değerlerini düzenlemek için ;
Kadir Evciler’in daha önce yazdığı aşağıdaki scripti kullanabilirsiniz.
Kod2
create table #temp(UserName varchar(100),UserSID varbinary(85)); insert into #temp exec sp_change_users_login 'Report' declare ACur cursor for select UserName from #temp open ACur declare @userName varchar(50) fetch from ACur into @userName while @@FETCH_STATUS=0 begin exec sp_change_users_login 'Update_One',@userName,@userName fetch next from ACur into @userName end close ACur deallocate Acur
Yukarıdaki Scriptte gerçekleşen olay ; Kod1 de kullanılan scriptten dönen değeri temp bir table atıp exec sp_change_users_login Update_One’,@userName,@userName değeri ile SID değerlerinin güncelleştirilmesi sağlanıyor. Eğer işlem sonucunda hata ile karşılacaşacak olursanız orphaned user Server’da bulunmamaktadır.
Orphaned Userı Drop etmek için ise ;
Kod3
USE SampleDB GO EXEC sp_dropuser 'UserName' GO
İsterseniz Kullanıcıyı Drop etmeden önce bu makale aracılığı ile backup edinebilirsiniz ve kullanabilirsiniz..