Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

The server principal “sqlLoginName” is not able to access the database “myDatabaseName” under the current security context.

Şirkette geçenlerde DRC(Disastery Recovery Center)  serverlarımızda bir test yapmak için bir veritabanı uygulaması publish ettik ve loglarında bu hata ile karşılaştık. Biraz araştırunca sql server’ın restore olması sırasında syslogin SID si ile sysuser SID sinin uyuşmuyor olabileceğini gördük.
Aşağıdaki sorgularla SID leri karşılaştırdık.

USE <myDatabaseName>
SELECT sid FROM sys.sysusers WHERE name = ‘userName’
SELECT sid FROM sys.syslogins WHERE name = ‘userName’

ve aşağıdaki stored prosedür ile de problemi çözdük.
EXEC sp_change_users_login @Action=’update_one’, @UserNamePattern=’userName’,@LoginName=’userName’


You can see that the SID does not match the system views: sys.sysusers and sys.syslogins

SELECT sid FROM sys.sysusers WHERE name = ‘sqlLoginName’
SELECT sid FROM sys.syslogins WHERE name = ‘sqlLoginName’

http://blogs.technet.com/b/mdegre/archive/2010/08/28/the-server-principal-quot-sqlloginname-quot-is-not-able-to-access-the-database-quot-mydatabasename-quot-under-the-current-security-context.aspx

 

December 5, 2012 - Posted by | MSSql | , , , ,

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s