當我們重裝作業系統或 SQL Server 實例,並重新附加資料庫時,常會遇到資料庫內部用戶存在,但在伺服器層級找不到對應登入帳號的情況。這就是所謂的「孤立用戶」問題,導致應用程式無法正常連線資料庫。
在 SQL Server Management Studio (SSMS) 中,展開資料庫的「安全性」→「使用者」,可以看到原有的資料庫用戶(如 webuser);但切換到伺服器層級的「安全性」→「登入」,卻找不到對應的登入帳號。嘗試用該帳號登入時會報錯:無法開啟使用者預設資料庫。登入失敗。使用者 'webuser' 登入失敗。


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

webuser)


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


開啟「新增查詢」視窗,切換至目標資料庫,執行以下指令:
-- 查詢目前資料庫下的所有孤立用戶
EXEC sp_change_users_login 'report';
-- 修復單一孤立用戶:將資料庫用戶 'webuser' 對應到伺服器登入 'webuser'
EXEC sp_change_users_login 'update_one', 'webuser', 'webuser';
執行成功後會提示:「已修復一個孤立用戶。」重新整理資料庫的「使用者」節點,即可看到用戶名與登入名已正確對應。

當 .ldf 檔案異常膨脹時,可在查詢分析器中針對目標資料庫執行:
-- 截斷記錄檔(僅適用於簡單復原模式或非生產環境)
DUMP TRANSACTION [DatabaseName] WITH NO_LOG;
-- 收縮記錄檔
DBCC SHRINKFILE ([LogFileName], 1024); -- 壓縮至 1MB
注意:DUMP TRANSACTION ... WITH NO_LOG 在 SQL Server 2008 及以上版本已棄用,建議改用「簡單復原模式」配合 DBCC SHRINKFILE,或定期進行記錄備份以控制 LDF 大小。
在「伺服器網路公用程式」中,選取 TCP/IP 協定,點擊「屬性」,將預設連接埠 1433 修改為自訂連接埠,重啟 SQL Server 服務生效。

