确保 ANSI 到 Unicode 的正确转换

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

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

在运行 Microsoft Internet 信息服务 (IIS) 的计算机上安装的 SQL Server Compact Edition 服务器代理为 SQL Server Compact Edition 数据库将 SQL Server 中的 ANSI 数据转换为 Unicode,或从 Unicode 转换回来。为了确保正确转换,SQL Server Compact Edition 服务器代理确定在您执行 ANSI 到 Unicode 的转换之前 ANSI 数据存储在哪些代码页中。对下列信息进行分析:

  • 如果没有其他设置可用,则使用运行 IIS 的计算机的 ANSI 代码页。
  • 如果使用 SQL Server 2005 或 SQL Server 2000 的实例,则 SQL Server Compact Edition 服务器代理使用运行 SQL Server 的计算机的代码页。当 SQL Server 的每个实例设置成正确识别存储的 ANSI 数据时,为每个连接自动选择了正确的转换。
  • 如果转换没有为存储的数据给出正确值,您可以通过设置特定代码页的注册表项来替换代码页。

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

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

注意:
错误编辑注册表会严重损坏您的系统。更改注册表项之前,应该备份计算机中的所有重要数据。
  1. 如果注册表项不存在,请创建以下注册表项:
    HKLM\Software\Microsoft\MSSQLSERVERCE\Transport
  2. 在 HKLM\Software\Microsoft\MSSQLSERVERCE\Transport 项下,创建 DWORD 项值。项值的名称必须以与 SQL Server Compact Edition 的 IIS 虚拟目录相关的本地路径开始。例如,如果 Sqlcesa30.dll 位于文件夹 C:\Inetpub\Sqlce\ 中,您必须将注册表值命名为 C:\Inetpub\Sqlce\OVERRIDE_SERVER_CP。DWORD 项的数据值必须是代码页的值。例如,以下注册表项值用于英语代码页:
    Key:HKLM\Software\Microsoft\MSSQLSERVERCE\TransportValue:C:\Inetpub\Sqlce\OVERRIDE_SERVER_CP 1252
  3. 创建注册表项后,必须重新启动 IIS。这非常重要,因为 SQL Server Compact Edition 服务器代理只有当 IIS 第一次加载 SQL Server Compact Edition 服务器代理时才读取注册表项。

请参阅

帮助和信息

获取 SQL Server Compact Edition 帮助