問題
把數據庫從一個服務器實例附加和恢復到另一個實例中是數據庫管理 員執行的常見的任務。附加或者恢復一個數據庫之後,之前在數據庫中創建和配 置的登錄名已經不能訪問了。這個問題最常見的症狀是應用程序會遇到登錄失敗 的錯誤,或者是當你試著把登錄名添加到數據庫中時,你可能會得到一個信息比 如這個用戶已經在這個數據庫中存在。當你執行一個附加或者一個恢復時,這是 很常見的一種情況,那麼你如何解決這個問題呢?
專家解答
當數據 庫從一個服務器遷移到另一個服務器時,存儲在主從數據庫中的登錄名ids與存儲 在每個用戶數據庫中的登錄名ids不符合。正如上面所說的,附加或恢復一個數據 庫之後你會看到的一些錯誤包括:
Msg 229, Level 14, State 1
%s permission denied on object %.*s, database %.*s, owner %.*s
或 者
Microsoft SQL-DMO (ODBC SQLState: 42000) Error 15023: User or role '%s' already exists in the current database.
沒有正 確的理解和適當的計劃,你可能會遇到這個問題。你可能會刪除和重新創建這個 用戶,但是你將釋放所有配置的權限。所以一個正確的鏈接機制是需要的,因此 要保留權限。
你可能看到的一些可能的錯誤信息包括