在資料庫轉移時,從原主機「卸載(Detach)」資料庫檔案,並移至新主機「附加(Attach)」上去,在「新主機」沒有預先設定 Login 的情況下,資料庫中的 User 將無法刪除,也無法新增同名的 Login,相信有些人有遇到這樣的困擾過!
會 出現這個問題並不是 SQL Server 有 Bug,而是因為你每次建立的登入帳號都會在 SQL Server 中對應一個 SID,資料庫的「使用者」與「登入」的對應是用 SID 來比對的,所以你還原資料庫到另一台機器後,該資料庫中的使用者的 sid 無法比對到該主機 SQL Server 登入帳號中的 sid 所致,所以即便你自己新增了一個「登入」帳號,因為 SID 不一樣,所以也是沒有該資料庫的權限。
use gps;
--ALTER USER gps with login = gps;
EXEC sp_change_users_login 'Auto_Fix', 'gps', NULL;
sql 2000 sp_change_users_login
http://msdn.microsoft.com/zh-tw/library/ms174378.aspx
執行後的結果敘述呈現如下:
執行後的結果敘述呈現如下:
- 使用者 'mtaxi' 的資料列將會藉由更新它和現有登入的登入連結來修復。
藉由更新使用者而修復的孤兒使用者數量為 1。
藉由新增新的登入再更新使用者而修復的孤兒使用者的數量為 0。 - 使用者 'maddr' 的資料列將會藉由更新它和現有登入的登入連結來修復。
藉由更新使用者而修復的孤兒使用者數量為 1。
藉由新增新的登入再更新使用者而修復的孤兒使用者的數量為 0。
沒有留言:
張貼留言