如果您所连接到的 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 数据时,将会为每个连接自动选择正确的转换。
如果转换没有为存储的数据给出正确值,您可以通过设置特定代码页的注册表项来替换代码页。
创建注册表项以替换代码页
下列步骤显示如何创建替换代码页的注册表项。
备注
错误编辑注册表会严重损坏您的系统。更改注册表项之前,应该备份计算机中的所有重要数据。
如果注册表项不存在,请创建以下注册表项:
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 项的数据值必须是代码页的值。例如,以下注册表项值用于英语代码页:
注册表项: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 服务器代理时才读取注册表项。