openquery转换失败,因为数据值溢出了提供程序

时间:2016-06-22 02:37:00

标签: sql-server sql-server-2008-r2

我使用SQL Server 2008使用链接服务器从其他服务器获取数据。

SELECT * FROM OPENQUERY (METER, 
       'SELECT 
             ME.Col1
            ,ME."ext"               AS ext         
            ,ME."t-date"                AS Date
            ,ME."per-id"                    AS Person
            ,PE."con-id"                AS Contact
            ,PE."add-id"                AS Address
            ,SC."contact-title"         AS Member
            ,SC."given"             AS Giver
            ,SC."surname"               AS lastname 

        FROM PU."member" ME
            LEFT JOIN PU."personal" PE
              ON ME."per-id" = PE."per-id"
            LEFT JOIN PU."cont" SC
              ON PE."contactid" = SC."contactid"

        WHERE ME."t-date" IS NULL 
           OR ME."t-date" >= NOW()')

我收到错误:

 OLE DB provider "MSDASQL" for linked server "METER" returned message    "Multiple-step OLE DB operation generated errors. Check each OLE DB status   value, if available. No work was done.".
  Msg 7341, Level 16, State 2, Line 1
  Cannot get the current row value of column "[MSDASQL].T_DATE" from OLE DB   provider "MSDASQL" for linked server "METER". Conversion failed because the data   value overflowed the data type used by the provider.

如果我删除where where并执行此操作,我也会遇到同样的错误。所以我认为"日期"这里没有引起任何问题。如果我错了,请纠正我。

但是,如果我删除,SC。" contact-title"来自上述查询的AS会员,它给我结果并且工作正常。

我得到的信息是:

每个字段中的数据长度必须小于架构中描述的长度。对于定义为某些字符的联系人标题,数据需要小于该标题。 - 我理解这一点。

我的问题在于选择查询我试图获取数据而我没有插入任何地方。但是,仍然为什么这个字符长度不匹配?根据我的理解,如果我将它插入某处,则可能存在问题。但是选择不应该给出问题。

我只是从第三方服务器获取数据并显示。我的数据库/我的数据库是否有任何问题?如果是,怎么样?

有没有人遇到过类似的问题以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

刚刚更改了SC。" contact-title" to substring(SC。" contact-title" 1,14),它起作用了。注意 - SUBSTR和SUBSTRING都工作正常。