确保 ANSI 到 Unicode 的正确转换

如果您所连接到的 SQL Server 实例包含 ANSI 数据,则此数据在存储到 SQL Server Compact 3.5 数据库中之前将转换为 Unicode。取决于运行 SQL Server 的计算机和运行 IIS 的计算机的代码页,可能会发生转换错误。下面的信息帮助确保正确转换数据。

SQL Server Compact 3.5 服务器代理中 ANSI 到 Unicode 的转换

对于 SQL Server Compact 3.5 数据库,在运行 Microsoft Internet 信息服务 (IIS) 的计算机上安装的 SQL Server Compact 3.5 服务器代理可将 SQL Server 数据在 ANSI 形式和 Unicode 形式之间来回转换。为了确保正确转换,SQL Server Compact 3.5 服务器代理在您执行 ANSI 到 Unicode 的转换之前,会确定 ANSI 数据使用何种代码页进行存储。对下列信息进行分析:

  • 如果没有其他设置可用,则使用运行 IIS 的计算机的 ANSI 代码页。

  • 如果使用 SQL Server 2005 或更高版本的实例,则 SQL Server Compact 3.5 服务器代理使用运行 SQL Server 的计算机的代码页。当已设置 SQL Server 的每个实例以正确标识所存储的 ANSI 数据时,将会为每个连接自动选择正确的转换。

  • 如果转换没有为存储的数据给出正确值,您可以通过设置特定代码页的注册表项来替换代码页。

创建注册表项以替换代码页

下列步骤显示如何创建替换代码页的注册表项。

备注

错误编辑注册表会严重损坏您的系统。更改注册表项之前,应该备份计算机中的所有重要数据。

  1. 如果注册表项不存在,请创建以下注册表项:

    HKLM\Software\Microsoft\Microsoft SQL Server Compact Edition\v3.5\Transport

  2. 在 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 项的数据值必须是代码页的值。例如,以下注册表项值用于英语代码页:

    注册表项:HKLM\Software\Microsoft\Microsoft SQL Server Compact Edition\v3.5\TransportValue:C:\Inetpub\Sqlce\OVERRIDE_SERVER_CP 1252

  3. 创建注册表项后,必须重新启动 IIS。这非常重要,因为 SQL Server Compact 3.5 服务器代理只有当 IIS 第一次加载 SQL Server Compact 3.5 服务器代理时才读取注册表项。