SQL Server 2005 CodePage问题

时间:2010-01-05 20:44:43

标签: sql-server internationalization codepages

我有一个问题,我想解决。我们有一个运行商业ERP系统的SQL Server 2005。这意味着我们无法更改数据库结构,并且所有字符字段都是CHAR或VARCHAR而不是Unicode类型(NCHAR,NVARCHAR)。

我们还有多个基于国家/地区的ERP软件实例。每个国家/地区在同一数据库服务器上都有自己的数据库,这会导致基于正在运行的ERP软件实例的表名称发生变化。例如,美国客户表称为US_CUSTOMER,英国客户表称为GB_CUSTOMER。我们创建了一个单独的数据库,它基本上用同义词镜像ERP系统表,然后是根据这些同义词处理所有SQL事务的视图。这样做是为了使用LINQ TO SQL。感谢您阅读此内容:)

我们遇到的问题是我们现在正在为应用程序实现简体中文。在客户ERP系统中,他们为ERP系统设置代码页,以便当ERP系统写入基表时,数据被写为多字节。我的问题是如何将这个多字节信息转换回简体中文?我希望能够在数据库级别执行此操作,因为我同时拥有需要利用它的Web应用程序和SSRS报告。

任何想法或方向?我不认为我可以更改代码页,因为多个国家/地区使用相同的数据库服务器(尽管不同的数据库)。

提前致谢

2 个答案:

答案 0 :(得分:1)

我们是说2个varchar字符用于存储1个unicode字符吗?

如果是这样,请尝试CAST到二进制到nvarchar等(或类似的东西)

否则,请查看COLLATE子句以强制数据?

编辑:

CLR功能可能是您使用Remus建议MultiByteToWideChar的唯一选择

答案 1 :(得分:0)

我们最终为此做的是编写一个可以从我们的SQL语句调用的CLR函数。我们传入字符串和所需的代码页,并返回转换后的字符串。表现不是我们所希望的,但它似乎是我们能找到的唯一途径。