首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 孤立用戶問題完整解決方案:從 MSSQL 2000 升級至 2005 實戰

     編輯:關於SqlServer

前言:升級引發的權限危機

近期網站頻遭攻擊,資料庫多次掛馬。為加強安全性,我們將論壇升級,並將資料庫從 MSSQL 2000 遷移至 MSSQL 2005,採用資料庫還原功能。遷移完成後,卻遇到了經典的「孤立用戶」問題,導致原有應用無法存取資料表。

什麼是孤立用戶?

當資料庫還原到新伺服器時,資料庫內的用戶(如 test)會保留原有的安全識別碼(SID),但新伺服器的登入帳戶卻擁有不同的 SID。即使你建立了相同名稱、相同密碼的登入帳戶,資料庫用戶與伺服器登入之間的 SID 不匹配,導致用戶無法存取原本擁有權限的物件。

核心解決方案:sp_change_users_login 儲存程序

經驗證,MSSQL 2005 下最有效的修復方法是使用系統儲存程序 sp_change_users_login。它提供三種動作模式:

  • Report:列出目前資料庫所有孤立用戶
  • Update_One:將指定資料庫用戶映射到現有的伺服器登入
  • Auto_Fix:自動建立登入並完成映射(若登入不存在)

步驟 1:偵測孤立用戶

USE testdb;
GO
EXEC sp_change_users_login 'Report';

步驟 2:修復單一用戶(登入已存在)

EXEC sp_change_users_login 'Update_One', 'test', 'test';

系統將提示已修復一個孤立用戶,SID 完成重新對應。

步驟 3:自動建立登入並修復(登入不存在)

EXEC sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassWord';

此命令會自動建立名為 test、密碼為 testpassWord 的伺服器登入,並與資料庫用戶完成映射。

多資料庫場景處理

若多個資料庫存在同名用戶的資料表,只需依序切換資料庫上下文(USE dbname),重複執行 Update_One 即可。

總結

資料庫升級遷移後,孤立用戶是常見問題。掌握 sp_change_users_login 的三種模式,能快速恢復應用存取權限,避免業務中斷。建議遷移後立即執行 Report 掃描,批次修復所有孤立帳戶。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved