Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server openquery转换失败,因为数据值溢出了提供程序使用的数据类型_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

Sql server openquery转换失败,因为数据值溢出了提供程序使用的数据类型

Sql server openquery转换失败,因为数据值溢出了提供程序使用的数据类型,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我正在使用SQLServer2008使用链接服务器从另一台服务器获取数据 SELECT * FROM OPENQUERY (METER, 'SELECT ME.Col1 ,ME."ext" AS ext ,ME."t-date" AS Date ,ME."per-id"

我正在使用SQLServer2008使用链接服务器从另一台服务器获取数据

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条件并执行它,我也会得到相同的错误。所以我认为“日期”并没有引起任何问题。如果我错了,请纠正我

但是,如果我将,SC.“contact title”作为成员从上述查询中删除,它会给出结果并正常工作

我得到的信息是:

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

我的问题是,在select查询中,我试图获取数据,但没有插入任何位置。但是,为什么字符长度不匹配呢?根据我的理解,如果我把它插入某个地方,那么可能会有问题。但只是选择不应该给问题

我只是从第三方服务器获取数据并显示。我的终端/我的数据库是否存在任何问题?如果是,如何进行


任何人都可能遇到类似的问题,以及如何解决这个问题?

刚刚将SC“联系人标题”改为子字符串(SC“联系人标题”,1,14),并且成功了。注意-SUBSTR和SUBSTRING都工作正常。

您可以在没有AS成员的情况下尝试
,SC.“contact title”
吗?链接服务器指向什么?另一台SQL server还是Oracle server?如果是MSSQL,如果是Oracle,请尝试在OPENQUERY本身中将T-DATE转换为DateTime。毫秒字段的长度可能太长。@Sam,请详细告诉我,您希望我如何转换它?任何查看查询的示例都有助于将(ME.“t-date”转换为DATETIME)转换为date,但只有当链接的服务器仪表是MSSQL服务器时,这才有效。你能告诉我链接服务器指向什么吗?它是Access数据库还是MSSQL数据库或Oracle数据库?它是主动/Oracle数据库。我认为,问题不在于日期。其带有“SC”。联系人名称为“作为成员”。ODBC驱动程序不允许长度大于架构指定的长度。所以我需要修剪数据值,使其小于模式指定的长度(即15)。有没有接收小于15的数据的想法?我的意思是,数据可能超过15,但是,我只会读不到15。