2010-01-05 211 views
2

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

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

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

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

由于时间

回答

0

的Remus的建议,我们最终什么事做了,这是写一个CLR函数,可以从我们的SQL语句被称为唯一赌注。我们传入字符串和所需的代码页并获取返回的转换后的字符串。表现并非我们所希望的,但它似乎是我们能找到的唯一途径。

1

提前难道我们说,2个VARCHAR字符正在使用来存储一个Unicode字符?

如果是这样,尝试强制转换为二进制为nvarchar等(或类似的东西)

否则,看COLLATE子句来强制数据?

编辑:

一个CLR函数可能是你使用的MultiByteToWideChar

+0

是的,两个varchar字符存储1个unicode字符。 – 2010-01-05 21:02:59

+1

演员我不认为它会奏效。它会将多字节集中的每个单独字节转换为与其相同的unicode。正确的翻译是通过“MultiByteToWideChar”http://msdn.microsoft.com/en-us/library/cc500362.aspx,我不认为这个功能可用作T-SQL – 2010-01-05 21:16:28

+0

@Remus:它是一个无论如何,长镜头,,, – gbn 2010-01-05 21:43:55