【问题标题】:Error: ORA-28500:[Oracle][ODBC SQL Server Driver]String data, right truncation错误:ORA-28500:[Oracle][ODBC SQL Server Driver]字符串数据,右截断
【发布时间】:2010-12-28 20:02:39
【问题描述】:

我们正在尝试通过 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 字符集是 AL32UTF8。

【问题讨论】:

    标签: database sql-server-2005 odbc oracle11gr2


    【解决方案1】:

    最可能的原因是这些列包含 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 并允许插入。

    请参阅Gateway Data Type Conversion Table for 11gR2,了解有关如何翻译这些列的更多信息。

    【讨论】:

    • true,但在 SQL Server 上无法移动,因为它是 Navision ERP 数据库。
    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 2012-07-18
    • 1970-01-01
    • 2020-07-26
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多