我有一个客户,他有一个链接到 Oracle 8i 数据库的 SQL Server 2000 数据库。他们在 SQL Server 2000 数据库中有几十个视图,这些视图引用了 Oracle 数据库,通常使用简单的语法,例如:
SELECT *
FROM SERVER..DB.TABLE
这些视图(以及引用它们的存储过程)已经运行了好几年,没有问题。突然,今天早上,其中一些(但不是全部)因以下错误而失败:
Server: Msg 7330, Level 16, State 2, Procedure SALES_ORDER_HEADERS, Line 7
Could not fetch a row from OLE DB provider 'MSDAORA'.
[OLE/DB provider returned message: ORA-01854: julian date must be between 1 and 5373484]
OLE DB error trace [OLE/DB Provider 'MSDAORA' IRowset::GetNextRows returned 0x80040e07].
当我们使用上面的四部分语法(与视图定义的语法相同)选择数据时,查询成功且没有问题,并且 . 但是,我们无法根据该语法创建视图,我们无法编辑现有视图(在设计器中),并且我们无法弄清楚为什么直接查询链接表有效,但通过查询使用它却失败了。
我的公司没有构建系统,我们通常也不维护它 - 客户有一个内部开发团队在处理它,但他们要求我们的故障排除帮助,我们和他们一样难过,所以我想我会在这里问。
任何人都知道为什么我们会看到这种行为——更重要的是,如何纠正它?(升级不足;此时不是一个选项。)作为一种临时解决方法,我们发现 usingOPENQUERY
确实起作用,但它当然很慢。如果可能的话,我们想要一个不涉及 的解决方案OPENQUERY
。
回应评论:意见中没有ORDER BY
定义。存储过程中可能有,但我不确定。(我在发布问题前大约 20 分钟才第一次看到这个数据库。:))