我使用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会员,它给我结果并且工作正常。
我得到的信息是:
每个字段中的数据长度必须小于架构中描述的长度。对于定义为某些字符的联系人标题,数据需要小于该标题。 - 我理解这一点。
我的问题在于选择查询我试图获取数据而我没有插入任何地方。但是,仍然为什么这个字符长度不匹配?根据我的理解,如果我将它插入某处,则可能存在问题。但是选择不应该给出问题。
我只是从第三方服务器获取数据并显示。我的数据库/我的数据库是否有任何问题?如果是,怎么样?
有没有人遇到过类似的问题以及如何解决这个问题?
答案 0 :(得分:0)
刚刚更改了SC。" contact-title" to substring(SC。" contact-title" 1,14),它起作用了。注意 - SUBSTR和SUBSTRING都工作正常。