Delphiの子孫コンポーネントを介して、DBF/CDX インデックス ファイルでAdvantage Database Server 9.1 (Netware) を数年間正常に使用してきました。TDataSet
(これは、統計/レポート目的で必要なレガシー データです。)
数週間前、ネットワーク オペレーティング システムを Netware から Win2K8 に切り替え、ADS 9.1 に移行しました。SELECT
これにより、サーバー データベースに対してクエリを実行するローカル クライアントからのクエリの機能が壊れていました。
たとえば、次のクエリは、ARC32 の SQL ウィンドウで Netware バージョンの ADS 9.1 で正常に機能し、ローカル接続で実行して のテーブルを解放しC:\Data
ます。
INSERT INTO MyLocalDB
SELECT TOP 10 * FROM [\\MyServer\Data\MyRemoteDB.dbf] WHERE somecondition
代わりに、サーバーのディレクトリにマップされたドライブを使用して、同じクエリが機能しました。
INSERT INTO MyLocalDB
SELECT TOP 10 * FROM [S:\Data\MyRemoteDB.dbf] WHERE somecondition
これはフリー テーブルであり、データ ディクショナリの一部ではないことに注意してください。これは、格納されているサーバー上のフォルダーへの読み取り/書き込みアクセス権を持つ場所にある空きテーブルです。ローカル クライアント接続のフォルダーは完全にアクセス可能です (データへのローカル接続を使用して、アプリケーションを日常的にテストするために使用されます)。通常のアプリケーションは、クライアント上でローカル接続データまたはリモート接続データのいずれに対しても問題なく実行できます。問題なのは、サーバー データを取得するためのローカル接続からのクエリだけであり、以前は正しく機能していました。唯一の違いは、OS と ADS の両方で Netware から Win2k8 に切り替えたことであり、ドキュメント (以下の引用されたヘルプ ファイルの内容を参照) によると、引き続き動作するはずです。
Windows バージョンの ADS 9.1 に切り替えた後、上記のクエリは両方とも失敗し、
エラー 7008: 指定されたテーブル、メモ ファイル、またはインデックス ファイルを開くことができませんでした。テーブル名 \MyServer\Data\MyRemoteDB.dbf (または S:\Data\MyRemoteData.dbf)。
今週、システムを ADS 10.10 にアップグレードしました (および ADS 10.10 TDataSet
10.10 コンポーネントにもアップグレードしました) が、上記のクエリは依然として失敗します。
これは単に Windows バージョンの ADS ではサポートされていないのでしょうか? ドキュメントでは、最初のものが機能するように見えます。
テーブル名のパスのドライブ文字は、Advantage Local Server でのみ使用できます。NT または NetWare 用の Advantage データベース サーバーを使用する場合、クライアント側のドライブ文字が意味を持たないサーバーで SQL ステートメントが解析されるため、完全修飾パスは UNC を使用する必要があります ("\server\volume\path\table" など)。このように参照される表は、標準外の文字が含まれているため、二重引用符または [] (大括弧) で囲む必要があることに注意してください。
[]
UNC パスは角かっこで適切に囲まれており、パスまたはテーブル名のどこにもスペースはありません。.dbf
拡張子を追加して、または追加せずに試しました。エラーメッセージは同じままです。