Oracle 8i データベースにリンクされた SQL Server 2000 データベースを持っているクライアントがいます。SQL Server 2000 データベースには、Oracle データベースを参照する多数のビューがあり、多くの場合、次のような単純な構文を使用しています。
SELECT *
FROM SERVER..DB.TABLE
これらのビュー (およびそれらを参照する sproc) は、YEARS の間問題なく動作しました。突然、今朝、それらの一部 (すべてではない) が次のエラーで失敗しています。
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].
上記の 4 部構成の構文 (ビューで定義されているのと同じ構文) を使用してデータを選択すると、クエリは問題なく成功し、. ただし、その構文でビューを作成することはできず、(デザイナーで) 既存のビューを編集することはできません。また、リンクされたテーブルを直接クエリすると機能するのに、クエリを介してそれを使用すると失敗する理由を理解できません。
私の会社はシステムを構築しませんでしたし、私たちは通常それを維持していません.クライアントはそれに取り組んでいる社内の開発チームを持っていますが、彼らは私たちのトラブルシューティングの助けを求めました.ここで質問しようと思いました。
なぜこの動作が見られるのか、そしてさらに重要なことに、それを修正する方法を知っている人はいますか? (アップグレードには至りません。現時点ではオプションではありません。) 一時的な回避策として、 usingOPENQUERY
が機能することを発見しましたが、もちろん非常に遅いです。OPENQUERY
可能であれば、関係のない解決策を希望します。
コメントへの対応:ORDER BY
ビューには定義されていません。sprocs にあるかもしれませんが、確かではありません。(質問を投稿する約 20 分前に、このデータベースを初めて見ました。:))