我们正在将数据库从Oracle Database 11g企业版(我们无法控制)映射并复制到SQL Server 2008 R2(我们有控制权)。
数据复制由C#代码与Oracle客户端(ODAC)完成。在我们需要验证SQL Server 2008 R2上的复制数据之前,一切正常。
问题在于SQL Server 2008 R2。
使用SQL Server Management Studio,我能够看到带有外国口音字段的记录:
select *
from EVENT_LOG
where ID = 30268 and EVENT_DATETIME = '2014-9-24 13:10:31.000'
此查询将返回多条记录,我只显示一条记录为
ID | EVENT_DATETIME | ........ | EVENT_DESCRIPTION
------------------------------------------------------------------------------------------
30268 |2014-9-24 13:10:31.0000000 | ........ | Les cibles XM Num et/ou les limites ont �t� automatiquement mises � jour.
此表的主键由ID
,EVENT_DATETIME
和EVENT_DESCRIPTION
组成。因此,有必要在查询中包含所有3个字段以查找唯一记录。
所以查询就像
select *
from EVENT_LOG
where ID = 30268
and EVENT_DATETIME = '2014-9-24 13:10:31.0000000'
and EVENT_DESCRIPTION = 'Les cibles XM Num et/ou les limites ont �t� automatiquement mises � jour.'
但是,上述查询将不会在SQL Server 2008 R2 Management Studio中返回任何内容。当我使用Microsoft SQL CLIENT在C#代码中运行查询时也是如此。我没有回复记录。这一栏" EVENT_DESCRIPTION"需要存储各种外国口音,不仅限于法语。
SQL Server 2008 R2中的排序规则为SQL_Latin1_General_CP1_CI_AS
。
我也尝试过查询
select *
from EVENT_LOG
where ID = 30268
and EVENT_DATETIME = '2014-9-24 13:10:31.0000000'
and EVENT_DESCRIPTION = N'Les cibles XM Num et/ou les limites ont �t� automatiquement mises � jour.'
如此链接" query collation on foreign language field in Latin table"所示。它还没有用。
EVENT_DESCRIPTION是" nvarchar(4000)"