最近在使用SqlServer和SSIS導入一個CSV文件到數據庫時(SSIS選用的FlatFileSource作為數據流源),老是遇到 The LocaleID 4 is not installed on this system. 這個錯誤。
后來搞了老半天發現是FlatFileSource的Locale選項選擇上出現了問題,由於要導入的CSV文件中包含中文,所以在用Sqlserver/SSIS導入csv時我在FlatFileSource的Locale上選擇了Chinese (Simplified)避免中文進入數據庫后變成亂碼(如下圖所示),但是客戶的數據庫服務器上安裝的是英文的windows server 2008,操作系統中沒有中文語言包,所以當在Sqlserver/SSIS中的FlatFileSource中選擇Locale為Chinese (Simplified)后,Sqlserver在windows server系統中找不到Chinese (Simplified)這個區域的語言包所以就出現了上面那個截圖中的錯誤。
要解決這個問題,你首先要清楚SSIS所在的服務器上操作系統安裝了什么語言包,然后最重要的一點是只要將FlatFileSource中的Code page設置為正確的編碼就可以解決中文導入數據庫后變成亂碼的問題,你可以在FlatFileSource中選擇好Code page后點Preview先預覽一下,如果預覽的時候數據不是亂碼那么入庫后數據也應該就不會是亂碼。本例中我發現客戶服務器操作系統雖然不支持Chinese (Simplified)這個Locale,但是支持Chinese (people's republic of china)這個Locale,將FlatFileSource的Locale像下面截圖中改成Chinese (people's republic of china),然后確保Code page設置為936后,我就將CSV文件成功地導入到了數據庫中並且沒有出現亂碼。