在遷移資料庫的過程中SQLServer SDE的問題
SQLServer2008使用者組或角色'*****'在當前資料庫中已存在問題的解決辦法
在遷移資料庫的過程中SQLServer SDE的問題
為一個資料庫添加一個使用者時,提示以下資訊:
使用者、組或角色 '*****' 在當前資料庫中已存在。 (Microsoft SQLServer, Error: 15023)
問題分析:在遷移測試平台資料庫的過程中發現,
在兩台伺服器上啟動並執行sql server伺服器之間遷移資料庫的之後,
會出現一個在原始伺服器上可以正常的使用者在目的伺服器上無法登入的情況。
問題解決:
將資料庫恢複到其他伺服器時,資料庫中包含一組使用者和許可權,
但可能沒有相應的登入或者登入所關聯的使用者可能不是相同的使用者。
這種情況被稱為存在“孤立使用者”。
此時是不能通過建立登入或者是對同名登入授予對應資料庫的“使用者”許可權來解決登入問題,
因為SQLServer會報出“錯誤15023:當前資料庫中已存在使用者或角色”,
為瞭解決這個問題,
需要調用系統預存程序sp_change_users_login,
具體用法如下:
1.開啟SQL Server Management Studio,
右鍵選擇“資料庫”>“建立查詢”來建立一個查詢。
輸入以下sql指令碼:
//=======================
Use [資料庫名]
go
sp_change_users_login 'update_one', 'AAA', 'AAA'
//========================
sp_change_users_login 'update_one', 'AAA', 'AAA'
接著執行指令碼即可。
註:其中update_one是預存程序的參數,
表示只處理一個使用者,前一個AAA是“使用者”,
後一個AAA是“登入”,
以上這個SQL表示將伺服器登入“AAA”與資料庫使用者“AAA”重新串連起來。
Use sde
go
sp_change_users_login 'update_one','sde','sde'
go
use cbjyq_flowdb
go
sp_change_users_login 'update_one', 'cbjyq_flowdb', 'cbjyq_flowdb';
go
use sde
go
sp_change_users_login 'update_one', 'cbjyq_flowdb', 'cbjyq_flowdb';
go
use cbjyq_flowdb
go
sp_change_users_login 'update_one', 'sde', 'sde';
go
--the--end!