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