??? 此問題出現在數據庫的移值上。移值后,數據庫的登陸名和數據庫用戶名孤立,原數據中,用建立的用戶名密碼登陸可以訪問數據庫,但是移值后就不能訪問了。而且如果您嘗試向該登錄帳戶授予數據庫訪問權限,則會因該用戶已經存在而出現以下錯誤信息:?????‘該登錄已經在另一個用戶名下擁有帳戶’。
?? 產生錯誤的原因是:
??????????? 在您向目標服務器傳輸登錄帳戶和密碼后,您的用戶可能還無法訪問數據庫。登錄帳戶與用戶是靠安全識別符 ? (SID) ? 關聯在一起的;在您移動數據庫后,如果 ? SID ? 不一致,SQL ? Server ? 可能會拒絕用戶訪問數據庫。此問題稱為孤立用戶。如果您使用? SQL ? Server ? 2000 ? DTS ? 傳輸登錄功能來傳輸登錄帳戶和密碼,就可能會產生孤立用戶。此外,被允許訪問與源服務器處于不同域中的目標服務器的集成登錄帳戶,也會導致出現孤立用戶。?
?? 以下是解決辦法:
??????????? 1.查找孤立用戶。在目標服務器上打開查詢分析器,然后在您移動的用戶數據庫中運行以下代碼:?? exec ? sp_change_users_login ? 'Report'?,?查找到后執行
Use
?lk96160
go
sp_change_users_login?
'
update_one
'
,?
'
lk96160
'
,?
'
lk96160
'
一般問題就會解決。
??????????? 2.如果一個用戶是孤立用戶,數據庫用戶可以成功登錄到服務器,但卻無權訪問數據庫。如果您嘗試向該登錄帳戶授予數據庫訪問權限,則會因該用戶已經存在而出現以下錯誤信息:?????
??
Microsoft???SQL
-
DMO???(ODBC???SQLState:
42000
)???Error???
15023
:
User
???
or
???role???
'
%s
'
???already???
exists
???
in
???the???
current
???
database
.
??或是登陸名對應該的用戶改成了dbo,則在sa下執行一下以下代碼:
exec
???sp_changedbowner???
'
sa
'
?
然后再執行:
Use
?lk96160
go
sp_change_users_login?
'
update_one
'
,?
'
lk96160
'
,?
'
lk96160
'
一般問題就會解決了。