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

SQL Server 錯誤 15023 解決:孤立用戶重新映射登入

     編輯:MySQL 綜合教學

SQL Server 錯誤 15023 解決:孤立用戶重新映射登入

錯誤現象

遠端備份還原到本地後,嘗試將「登入」關聯「用戶」時拋出:

錯誤 15023:當前資料庫中已存在用戶或角色

錯誤截圖

根因:登入 vs 用戶,SID 不匹配

概念 層級 用途
登入 伺服器層級 身分驗證
用戶 資料庫層級 權限授權
  • 兩者透過 **SID (Security Identifier)** 關聯
  • 跨伺服器還原時,資料庫用戶保留原 SID,但新伺服器登入產生新 SID
  • 導致「孤立用戶」:用戶存在但無對應登入,或 SID 不匹配
  • 直接建立同名登入會報 15023,因用戶已存在且 SID 衝突

解決方案:sp_change_users_login

USE Northwind;
GO
EXEC sp_change_users_login 'update_one', 'test', 'test';

參數說明

  • 'update_one':處理單一用戶
  • 'test' (第 2 參數):資料庫**用戶名**
  • 'test' (第 3 參數):伺服器**登入名**
  • 作用:將登入 test 的 SID 更新至資料庫用戶 test,重新建立關聯

進階:批次修復所有孤立用戶

-- 檢測孤立用戶
EXEC sp_change_users_login 'Report';

-- 自動修復(需登入與用戶同名)
EXEC sp_change_users_login 'Auto_Fix', 'username', NULL, 'password';

預防建議

  1. 跨環境遷移時,優先用 **Contained Database**(自包含資料庫)避免 SID 問題
  2. 腳本化遷移流程,包含 sp_change_users_login 步驟
  3. 文件化記錄登入/用戶對應關係

💡 一句話心法:SQL Server 遷移後遇 15023,**別重建用戶**,用 sp_change_users_login 'update_one', '用戶', '登入' 重新綁定 SID 即可。

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