【发布时间】:2010-08-02 12:20:32
【问题描述】:
我在 MS SQL Server 2008r2 中遇到了链接 Informix 表的问题。当我查询这个表时,它似乎忽略了我传递给它的一些标准,但没有忽略其他标准。例如,如果我在 rowdate 字段上设置条件,则执行计划的远程查询部分不会显示任何 WHERE 子句,但如果我将条件放在另一个字段(例如 ACD)上,它会显示。
它似乎没有通过 rowdate 字段的任何标准,但在所有其他字段上都通过了。
我知道该字段在 Informix 端被索引。如果它有助于我链接的表来自 Avaya CMS,它是通过 OpenLink ODBC 驱动程序链接的。
编辑:
据我所知,它是 Informix Dynamic Server 2000,它在 Solaris 上。该列作为正确的 DATE 数据类型出现。我尝试通过“2010-08-03 00:00:00”、“2010-08-03”、CONVERT(date,'2010-08-03') 和更多变体等标准。当数据返回到 SQL Server 时,其格式为 yyyy-mm-dd。
当我查看执行计划时,我可以看到包含所有其他条件的远程查询,后跟仅针对 rowdate 字段的过滤器。
我知道 rowdate 已编入索引,并且驱动程序通常会在我们在其他应用程序(业务对象和 MS Access)中使用它时传达该信息,并且它们没有问题
【问题讨论】:
-
哪个版本的 Informix 在哪个平台上? “rowdate”的类型是什么?猜测是 DATE,但它可能是 DATETIME 的变体之一,例如 DATETIME YEAR TO DAY 或 DATETIME YEAR TO SECOND。驱动程序是否以相同的方式处理任何其他相同类型的列? 表面上这听起来像是“客户端”方面的问题;也就是说,如果驱动程序不发送标准,服务器就不能使用它。您可能想探索如何执行 SET EXPLAIN ON,以便您可以看到 Informix DBMS 将什么视为 SQL,以便与您认为应该看到的进行比较。
标签: sql-server informix linked-tables