分析和解答:
每個數據庫內都有一個稱為dbo的特殊用戶,固定服務器角色sysadmin的任何成員都影射到dbo上。如果某個數據庫內的dbo用戶對應的登錄,在另外一台SQL Server服務器裡面不存在的話,那麼當將這個數據庫的備份還原到另外一台SQL Server服務器時,dbo用戶所對應的登錄名就會為空。正是因為這個原因,系統不允許修改sa密碼。
解決步驟如下:
首先,檢查所有的數據庫,看看哪個數據庫的dbo用戶所對應的登錄名為空。
其次,找到這個出問題的數據庫之後,執行一些語句將這個數據庫的所有者更改為某個在目前服務器上存在的登錄名稱,即
use DBName
go
exec sp_changedbowner 'sa'
go
將每個出問題的數據庫都按照上面的方法檢查並更改之後,就可以順利地修改sa密碼了。
出處:http://hi.baidu.com/jianan8610/blog/item/c8de05fb2c211e106c22ebf1.Html