問題發生的原因很不好意思,因為歷史的歷史的原因,Sqlserver2000的數據也是從別的地方導入的,在那個很久很久以前的歷史時刻,是會發生半個漢字的問題的。大約就是字符串的最後一個漢字因為超過最大限制,只保存了半個。
原來在Sqlserver2000裡面,varchar就算有半個漢字,那也不影響使用,只是在顯示到界面的時候,美觀方面會有問題而已。可是現在導入Sqlserver2008的時候,sql2008堅決的拒絕接受帶有半個漢字的varchar字段。
你知道,行政命令是不可反對的,因此,必須把所有數據都原樣的導入到新的數據庫。當然,經過友好磋商,領導同意去掉那最後的半個漢字。
OK,問題擺出來了,怎麼去掉最後半個漢字?
寫程序?理論上沒有問題,可是,要寫多少個程序?誰又知道有多少個字段會有這樣的半個漢字?碰到一個就寫一個?饒了我吧!
於是土辦法出籠:
1、使用SQL2000的導入工具,千萬不能使用Sql2008的工具,用戶界面慢不說,碰到錯誤這個退出的速度也太堅決了。
2、先對所有表做導入,出現錯誤的表逐一處理。Sql2000的錯誤提示雖然沒有Sql2008多,可是很准確!精確到哪行,哪個字段有問題。因此,根據提示再對具體的字段做處理。