背景: 最近在遷移SQLServer資料庫2008時,建立使用者後,做使用者映射時。 SQLServer 報錯:使用者、組或角色'XXX' 在目前資料庫中已存在. 錯誤:15023.
下面講一下解決的方法。
<a href="http://s3.51cto.com/wyfs02/M01/87/00/wKiom1fQ263DFP3zAAAi8sHueTg144.png" target="_blank"></a>
分析:
将資料庫恢複到其他伺服器時,資料庫中包含一組使用者和權限,但可能沒有相應的登入或者登入所關聯的使用者可能不是相同的使用者。
這種情況被稱為存在“孤立使用者”。此時是不能通過建立登入或者是對同名登入授予對應資料庫的“使用者”權限來解決登入問題,
因為SQLServer會報出“錯誤15023:目前資料庫中已存在使用者或角色”,
簡單了解:
資料庫備份檔案中已經包含了使用者test,現在還原了資料庫,然後發現現有資料庫中沒有test這個使用者,想要建立一個test使用者,作為該資料庫的owner,便會出現這個問題。
可以了解為登入名和使用者是兩個不同的概念,雖然名稱相同。在建立登入名的時候,如果不添加該資料庫映射則不會報錯。添加資料庫映射相當于給該資料庫添加一個同名使用者。
但是已經存在了test這個使用者了,是以此時會報錯。
解決方法:
可以通過以下方法解決該問題。
1.建立一個test登入名,但是不要添加資料庫映射。
2.使用腳本,将孤立使用者test關聯到登入名test上:
Use [資料庫名]
go
sp_change_users_login 'update_one', 'test', 'test'
本文轉自pizibaidu 51CTO部落格,原文連結:http://blog.51cto.com/pizibaidu/1850636,如需轉載請自行聯系原作者