確保 ANSI 正確轉換為 Unicode
如果您要連接的 SQL Server 執行個體含有 ANSI 資料,此資料會先轉換為 Unicode,再儲存到 SQL Server Compact 3.5 資料庫。對於執行 SQL Server 的電腦及執行 IIS 的電腦,由於字碼頁的緣故,可能會發生轉換錯誤。以下資訊有助於確保資料正確轉換。
在 SQL Server Compact 3.5 伺服器代理程式中從 ANSI 轉換到 Unicode
SQL Server Compact 3.5 伺服器代理程式若安裝在執行 Microsoft Internet Information Services (IIS) 的電腦上,則可以將 SQL Server 中的 ANSI 資料與 SQL Server Compact 3.5 資料庫的 Unicode 資料來回轉換。為了確保正確轉譯,SQL Server Compact 3.5 伺服器代理程式會先判斷 ANSI 資料儲存在哪個字碼頁上,再讓您執行 ANSI 到 Unicode 的轉換。以下資訊必須加以考慮:
若未提供其他任何設定,就會使用執行 IIS 的 ANSI 字碼頁。
若您使用 SQL Server 2005 或更新版本的執行個體,SQL Server Compact 3.5 伺服器代理程式就會使用執行 SQL Server 之電腦的字碼頁。若已設定各個 SQL Server 執行個體正確識別要儲存的 ANSI 資料,就會為各個連接自動選取正確的轉譯。
若此轉譯未針對要儲存的資料提供正確的值,您可以將一個登錄機碼設定為特定字碼頁,以覆寫此字碼頁的設定。
建立登錄機碼以覆寫字碼頁
以下步驟說明如何建立登錄機碼來覆寫字碼頁。
警告
不當編輯登錄可能會造成系統嚴重受損。變更登錄之前,應該先備份電腦上任何重要的資料。
若系統尚未有此登錄機碼,請先建立如下:
HKLM\Software\Microsoft\Microsoft SQL Server Compact Edition\v3.5\Transport
在 HKLM\Software\Microsoft\Microsoft SQL Server Compact Edition\v3.5\Transport 機碼底下,建立 DWORD 機碼值。機碼值的名稱必須以 SQL Server Compact 3.5 的 IIS 虛擬目錄相關聯的本機路徑起始。例如,如果 Sqlcesa35.dll 位於 C:\Inetpub\Sqlce\ 資料夾,您必須將登錄值命名為 C:\Inetpub\Sqlce\OVERRIDE_SERVER_CP。DWORD 機碼的資料值必須為字碼頁的值。例如,以下登錄機碼值用於 English 字碼頁:
機碼:HKLM\Software\Microsoft\Microsoft SQL Server Compact Edition\v3.5\TransportValue: C:\Inetpub\Sqlce\OVERRIDE_SERVER_CP 1252
建立登錄項目之後,您必須重新啟動 IIS。這非常重要,因為只有在 SQL Server Compact 3.5 伺服器代理程式先由 IIS 載入時,SQL Server Compact 3.5 伺服器代理程式才會讀取此登錄機碼。