直播中
yy的SQL Server因為Master DB損壞,在沒有Backup的情況下,無法修復(fù)和Restore,無奈只能Reinstall SQL Server,然后用Sp_attach_db來附加原來的應(yīng)用DB File(xxx.mdf and xxx.ldf)。
為了保險起見,準(zhǔn)備現(xiàn)在一臺雙平臺的電腦上面試驗。這臺電腦c:\為簡體中文win98,然后從win98安裝了簡體中文Win2000 Server到D:\
在中文Win2000下,以Default方式安裝了SQL Server English Standard edition,Restarting Computer,一切正常。
進(jìn)入Programs \ Microsoft SQL Server 7.0 \ Query Analyzer,在Master DB中執(zhí)行如下命令:
Exec sp_attach_db ‘xxx’, ‘d:\Mssql7\data\xxx_data.mdf’, ‘d:\Mssql7\data\xxx_log.ldf’
隨即出現(xiàn)錯誤提示:
Server: Msg 1816, Level 16, State 1, Line 1
Could not attach the database because the character set, sort order, or Unicode collation for the database differs from this server.
Server: Msg 1816, Level 16, State 1, Line 1
Could not attach the database because the character set, sort order, or Unicode collation for the database differs from this server.
Warning: sort order 52 in database differs from server sort order of 199.
Warning: Unicode language locale 1033 in database differs from server Unicode language locale of 2052.
Warning: sort
錯誤信息指出:因為字符集設(shè)置、排序或者Unicode collation和本服務(wù)器不一致,所以無法附加數(shù)據(jù)庫。
MS SQL Server 安裝時如果選擇Default安裝的話,Default字符集是Chinese,考慮可能是這里的問題,yy為此再次Uninstall SQL Server,并且在Install的時候選手動設(shè)置了字符集為ISO Charact Set, Sort Order為Dictionary order, case-insensitive, Unicode Collation為General.
安裝完畢再次執(zhí)行sp_attach_db,仍然提示出錯,錯誤仍然不變。
這下百思不得其解,多方詢問朋友仍然不能解決。突然想到,是不是因為從中文98種安裝win2000致使win2000的字符集無法和SQL Server以致呢?雖然不能肯定是這樣,但是抱著試試看的一絲希望在一臺直接安裝win2000的機(jī)器上重復(fù)上述步驟,完全成功。然后再返回出錯的機(jī),從dos Reinstall Win2000,刪除以前的Win2000, 重復(fù)上述步驟,也完全成功。
證明問題出在從中文win98升級或者安裝的win2000字符集將和英文SQL Server和其下建立的DB不一致,相信除了不能Attach DB外,可能應(yīng)用的時候還會出現(xiàn)其他問題。
相信朋友們很少有象我這樣恢復(fù)數(shù)據(jù)庫的,也不大可能遇上這個問題,但是我還是愿意寫出來給大家參考。至于產(chǎn)生這個問題的更深層的原因,我現(xiàn)在也不大清楚,如果哪位朋友知道,請?zhí)鰜恚琽k?呵呵
作者:yy E-mail: Webmaster@possehl.com.cn or XB_Yuan@eB-IT.com