SQL 2005解決你遷移數(shù)據(jù)庫(kù)后以前用的帳戶(hù)不能使用 錯(cuò)誤15023:當(dāng)前數(shù)據(jù)庫(kù)中已存在用戶(hù)或角色
2009-11-03 14:18:52
14750
在使用SQL Server 2005時(shí),我們經(jīng)常會(huì)遇到一個(gè)情況:需要把一臺(tái)服務(wù)器上的數(shù)據(jù)庫(kù)轉(zhuǎn)移到另外一臺(tái)服務(wù)器上。而轉(zhuǎn)移完成后,需要給一個(gè)"登錄"關(guān)聯(lián)一個(gè)"用戶(hù)"時(shí),往往會(huì)發(fā)生錯(cuò)誤: “錯(cuò)誤15023:當(dāng)前數(shù)據(jù)庫(kù)中已存在用戶(hù)或角色” 這個(gè)問(wèn)題非常棘手,幾經(jīng)排常找到了原因與解決方法,因?yàn)檫@個(gè)問(wèn)題與解決方法均比較復(fù)雜,所以把這個(gè)過(guò)程中的一些經(jīng)驗(yàn)紀(jì)錄下來(lái)與大家分享,希望能對(duì)大家以后的類(lèi)似操作有所幫助。 原因及解決辦法如下: 首先介紹一下sql server中“登錄”與“用戶(hù)”的區(qū)別,“登錄”用于用戶(hù)身份驗(yàn)證,而數(shù)據(jù)庫(kù)“用戶(hù)”帳戶(hù)用于數(shù)據(jù)庫(kù)訪問(wèn)和權(quán)限驗(yàn)證。登錄通過(guò)安全識(shí)別符 (SID) 與用戶(hù)關(guān)聯(lián)。將數(shù)據(jù)庫(kù)恢復(fù)到其他服務(wù)器時(shí),數(shù)據(jù)庫(kù)中包含一組用戶(hù)和權(quán)限,但可能沒(méi)有相應(yīng)的登錄或者登錄所關(guān)聯(lián)的用戶(hù)可能不是相同的用戶(hù)。這種情況被稱(chēng)為存在“孤立用戶(hù)”。此時(shí)是不能通過(guò)新建登錄或者是對(duì)同名登錄授予對(duì)應(yīng)數(shù)據(jù)庫(kù)的“用戶(hù)”權(quán)限來(lái)解決登錄問(wèn)題,因?yàn)镾QL Server會(huì)報(bào)出“錯(cuò)誤15023:當(dāng)前數(shù)據(jù)庫(kù)中已存在用戶(hù)或角色”,為了解決這個(gè)問(wèn)題,需要調(diào)用系統(tǒng)存儲(chǔ)過(guò)程sp_change_users_login,具體用法如下: Use netzs go sp_change_users_login update_one, yjsy312, yjsy312 其中netzs為存在孤立用戶(hù)的數(shù)據(jù)庫(kù),update_one是存儲(chǔ)過(guò)程的參數(shù),表示只處理一個(gè)用戶(hù),前一個(gè)yjsy312是“用戶(hù)”,后一個(gè)yjsy312是“登錄”,以上這個(gè)SQL表示將服務(wù)器登錄“yjsy312”與 netzs 數(shù)據(jù)庫(kù)用戶(hù)“yjsy312”重新連接起來(lái)。這樣就可以正常使用數(shù)據(jù)庫(kù)了
會(huì)員登錄
賬號(hào)登錄 還沒(méi)有賬號(hào)?立即注冊(cè)