2011-06-18 159 views
1

我已經下載數據庫並將其附加到我的本地SQL服務器,但我似乎無法更改數據庫上的一個現有用戶的密碼。無法更改用戶的密碼

使用以下命令:

ALTER LOGIN [NotificationsUser] WITH PASSWORD = 'password'; 

我得到的錯誤:

Msg 15151, Level 16, State 1, Line 1 Cannot alter the login 'NotificationsUser', because it does not exist or you do not have permission.

這是可能的?我總有需要修改用戶權限什麼訪問權限?

回答

1

如果你連接這個數據庫到本地SQL服務器,那麼你就需要做兩件事情:

  1. 如果您還沒有這樣做,創建用戶登錄上您的SQL服務器與附加數據庫中存在的SQL服務器匹配。在連接數據庫之前執行此操作更簡單。但是可以在數據庫連接後完成。

  2. 由於新連接的數據庫中的用戶的SID與新創建的登錄不同,因此需要使用sp_change_users_login存儲過程來解決此問題。數據庫用戶實際上是孤立的。

例如,如果您有:

SQL登錄:bob附加的數據庫用戶:bob

打開在SQL Management Studio中用於連接數據庫的新查詢,然後運行:

sp_change_users_login @action='report' 

如果您的數據庫中存在「孤兒」用戶,那麼您將看到如下結果集:

 
UserName UserSID 
bob  0x57F6DFA5D5D7374A97769856E7CB5610 

要將此用戶重新連接到SQL登錄執行:

sp_change_users_login @action='update_one', 
         @loginname='bob', 
         @usernamepattern='bob' 
+0

優秀,這是固定的, – Rubans

1

我想你是一個數據庫用戶與服務器登錄混淆。

您的數據庫可能在其中有一個名爲NotificationUser的用戶,但是這需要與服務器登錄關聯,這是您嘗試通過腳本修改的對象。從其他服務器恢復數據庫不會創建此服務器登錄名,所以很有可能它不存在於您的服務器上。更多info here