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

SQL Server 重裝系統後修復資料庫孤立用戶與登入帳號對應關係

     編輯:關於SqlServer

當我們重裝作業系統或 SQL Server 實例,並重新附加資料庫時,常會遇到資料庫內部用戶存在,但在伺服器層級找不到對應登入帳號的情況。這就是所謂的「孤立用戶」問題,導致應用程式無法正常連線資料庫。

問題現象

在 SQL Server Management Studio (SSMS) 中,展開資料庫的「安全性」→「使用者」,可以看到原有的資料庫用戶(如 webuser);但切換到伺服器層級的「安全性」→「登入」,卻找不到對應的登入帳號。嘗試用該帳號登入時會報錯:無法開啟使用者預設資料庫。登入失敗。使用者 'webuser' 登入失敗。

資料庫用戶存在

伺服器登入缺失

解決步驟

1. 建立缺失的伺服器登入帳號

在 SSMS 物件總管中,右鍵點擊「安全性」→「登入」→「新增登入」。

新增登入對話框

  • 登入名:輸入與資料庫用戶同名的帳號(如 webuser)
  • 選擇 SQL Server 驗證,設定密碼
  • 預設資料庫:選擇目標資料庫
  • 取消勾選「強制執行密碼原則」與「強制執行密碼到期」

登入屬性設定

伺服器角色設定

使用者對應設定

點擊「確定」建立登入。此時若直接在「使用者對應」頁面勾選目標資料庫,可能會報錯「使用者已存在於目前的資料庫中」。解決方法是先點擊「取消」,不在這裡建立對應關係。

錯誤提示

取消對應

2. 使用系統預存程序修復孤立用戶

開啟「新增查詢」視窗,切換至目標資料庫,執行以下指令:

-- 查詢目前資料庫下的所有孤立用戶
EXEC sp_change_users_login 'report';

-- 修復單一孤立用戶:將資料庫用戶 'webuser' 對應到伺服器登入 'webuser'
EXEC sp_change_users_login 'update_one', 'webuser', 'webuser';

執行成功後會提示:「已修復一個孤立用戶。」重新整理資料庫的「使用者」節點,即可看到用戶名與登入名已正確對應。

修復成功對應關係

補充技巧

壓縮過大的交易記錄檔 (LDF)

當 .ldf 檔案異常膨脹時,可在查詢分析器中針對目標資料庫執行:

-- 截斷記錄檔(僅適用於簡單復原模式或非生產環境)
DUMP TRANSACTION [DatabaseName] WITH NO_LOG;

-- 收縮記錄檔
DBCC SHRINKFILE ([LogFileName], 1024); -- 壓縮至 1MB

注意:DUMP TRANSACTION ... WITH NO_LOG 在 SQL Server 2008 及以上版本已棄用,建議改用「簡單復原模式」配合 DBCC SHRINKFILE,或定期進行記錄備份以控制 LDF 大小。

修改 SQL Server 2000 連接埠

在「伺服器網路公用程式」中,選取 TCP/IP 協定,點擊「屬性」,將預設連接埠 1433 修改為自訂連接埠,重啟 SQL Server 服務生效。

網路公用程式設定

TCP/IP 連接埠修改

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