網站近日常常遭到攻擊,好幾回數據庫掛馬,前幾天把論壇升級了,今天又升級了數據庫,把以前的MSSQL 2000 升級到MSSQL 2005,用的是數據庫還原功能還原的,遇到了這個賬號孤立的問題。web
什麼是孤立用戶的問題?sql
好比,之前的數據庫的不少表是用戶test創建的,可是當咱們恢復數據庫後,test用戶此時就成了孤立用戶,沒有與之對應的登錄用戶名,哪怕你創建了一個test登陸用戶名,並且是之前的用戶密碼,用該用戶登陸後一樣沒辦法操做之前屬於test的用戶表。數據庫
Google 了一下,有不少解決方案,不過不少方案沒辦法實現,由於MSSQL 2005的權限的關係。這裏介紹一個通過我驗證的解決方法:sqlserver
咱們在創建了一樣名稱的數據庫登陸用戶後,數據庫中的表咱們照樣不能使用時由於sid的不一樣,就是系統登陸表和數據庫用戶表中的用戶名相同,單是sid字段,數據庫中的仍是之前舊系統的sid值,因此咱們就要把它對應成咱們新建的,數據庫靠sid來識別用戶。網站
這裏可使用存儲過程sp_change_users_login。它有三種動做,分別是report,update_one和auto_fix。運行下面的代碼,系統會列出當前數據庫的孤立用戶數。sp_change_users_login 'report'咱們只須要選擇當前數據庫爲testdb,而後運行spa
sp_change_users_login 'update_one','test','test'server
系統就會提示修復了一個孤立用戶。若是沒有創建test的登陸用戶,還能夠用對象
sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassword'get
來建立一個登陸用戶名爲test,密碼爲testpassword的用戶與之對應。一般狀況下,數據庫對象獲得訪問問題已經解決了。若是有多個數據庫中有同一個用戶的數據表,只須要選擇不一樣的數據庫,執行update_one的那個就好了。io