我们正在尝试通过Oracle 11gR2网关连接到Sql Server 2005,当我们查询从Sql Server获取数据的视图时,我们收到此错误:
Error: ORA-28500:[Oracle][ODBC SQL Server Driver]String data, right truncation
我已在Oracle运行的查询中注释掉了一些列,但它确实有效。注释列的数据类型为VARHCAR(30),但还有其他字段也是VARCHAR(30)。
是否有任何解决方法可以解决此错误,如果我添加这3个未通过整个查询的列,一切都会好的,我尝试在运行Sql Server 2005的视图中重命名这些字段,这是数据源,没有结果。
安装了ODBC和SQL Server驱动程序,我们使用的是SQL Server驱动程序“dg4msql”。 Oracle charset是AL32UTF8。
答案 0 :(得分:0)
最可能的原因是这些列包含Oracle将使用多个字节来存储的字符。网关看到该列在SQL Server中定义为VARCHAR(30),因此它在Oracle中创建了一个VARCHAR2(30)列,但是(30)这里是30个字节而不是30个字符,所以你可以截断数据Oracle想要使用的字节总数超过30.(即,您在SQL Server中有30个字符,但其中一个字符在Oracle中需要2个字节,因此长度现在为31,因此太大了。)
作为一种解决方法,将SQL Server中的VARCHAR(30)列更改为NVARCHAR(30) - 网关将知道它可能会获得多字节字符,并将列定义转换为NVARCHAR并允许插入。 / p>
有关列将如何翻译的详细信息,请参阅Gateway Data Type Conversion Table for 11gR2。