解決SQL Server 2008 錯誤15023:當前數據庫中已存在用戶或角色,SQLServer2008,錯誤15023, sql
在使用SQL Server 2008時,我們經常會遇到一個狀況:須要把一臺服務器上的數據庫轉移到另一臺服務器上。而轉移完成後,須要給一個"登錄"關聯一個"用戶"時,每每會發生錯誤: 安全
「錯誤15023:當前數據庫中已存在用戶或角色」 spa
這個問題很是棘手,幾經排常找到了緣由與解決方法,因爲這個問題與解決方法均比較複雜,因此把這個過程中的一些經驗紀錄下來與你們分享,但願能對你們之後的類似操做有所幫助。 server
緣由及解決辦法以下:
首先介紹一下sql server中「登錄」與「用戶」的區別,「登錄」用於用戶身份驗證,而數據庫「用戶」賬戶用於數據庫訪問和權限驗證。登錄通過安全識別符 (SID) 與用戶關聯。將數據庫恢復到其餘服務器時,數據庫中包含一組用戶和權限,但可能沒有相應的登錄或者登錄所關聯的用戶可能不是相同的用戶。這種狀況被稱爲存在「孤立用戶」。此時是不能通過新建登錄或者是對同名登錄授予對應數據庫的「用戶」權限來解決登錄問題,因爲SQL Server會報出「錯誤15023:當前數據庫中已存在用戶或角色」,爲瞭解決這個問題,須要調用系統存儲過程sp_change_users_login,具體用法以下:
Use newzs date
go
sp_change_users_login 'update_one', 'infos1', 'infos1'
其中newzs爲存在孤立用戶的數據庫,update_one是存儲過程的參數,表示只處理一個用戶,前一個infos1是「用戶」,後一個infos1是「登錄」,以上這個SQL表示將服務器登錄「infos1」與 newzs數據庫用戶「infos1」從新連接起來。這樣就能夠正常使用數據庫了 方法