今天去科技園那邊維護公司服務器,早上九點到晚上十點,機房里空氣干燥,累得我兩眼迷成一條縫補~~~~
累是累了點,值得慶興的是又學到了點東西,呵呵~~其中遇到一個問題,花了一兩個小時才搞定,所以把這個過程中的一
些經驗紀錄下來與大家分享,希望能對大家以后的類似操作有所幫助。~~
問題描述:將服務器上的SQL Server 2000升級為SQL Server 2005,因為要重裝系統,所以不能直接升級數據庫,
先把
2000中的數據庫分離,等裝好2005后,再附加上來,完后,附加上來的數據庫中的用戶在2005中又不存在,想刪除,但刪除
失敗,在2005中新建個和原來一樣的用戶后,再給其分配權限,提示:
“錯誤15023:當前數據庫中已存在用戶或角色”
首先介紹一下sql server中“登錄”與“用戶”的區別,“登錄”用于用戶身份驗證,而數據庫“用戶”帳戶用于數
據庫訪問和權限驗證。登錄通過安全識別符 (SID) 與用戶關聯。將數據庫恢復到其他服務器時,數據庫中包含一組
用戶和權限,但可能沒有相應的登錄或者登錄所關聯的用戶可能不是相同的用戶。這種情況被稱為存在“孤立用
戶”。 此時是不能通過新建登錄或者是對同名登錄授予對應數據庫的“用戶”權限來解決登錄問題,因為SQL
Server會報出“錯誤15023:當前數據庫中已存在用戶或角色”,為了解決這個問題,需要調用系統存儲過程
sp_change_users_login,具體用法如下:
Use Northwind
go
sp_change_users_login 'update_one', 'test', 'test'
其中Northwind為存在孤立用戶的數據庫,update_one是存儲過程的參數,表示只處理一個用戶,前一個test是“用
戶”,后一個test是“登錄”,以上這個SQL表示將服務器登錄“test”與 Northwind 數據庫用戶“test”重新連接
起來。這樣就可以正常使用數據庫了。