WindowsServer2003にSQLServer2005を入れ、
遠地のクライアントからターミナルサービスで接続し、
システムを動かし、データを読み出したり書き出したりしている時に
「アクセスは拒否されました。」
というエラーが出てきてしまいます。
ちなみにAAA.exeからBBB.exeを呼び出しています。
データは表示や書込みが出来るのですが、
稀に上記エラーが出てしまいます。
原因が分からず四苦八苦しています。
原因は一体何なんでしょうか?
全く内容が変わります。
どうやらDBaseを使っていて、
何度もEmptyTableを行っているとエラーが出るみたいです。
でも環境は上記同様です。
SQL Serverの設定で接続が切れるのでは内でしょうか?
>>HOtaさん
DBaseはSQLServerとは関係ないみたいなのでそれはないとの言われました。
状況がよくわからないのですが、SQLServer2005を入れる前までは、問題なかったのなら、とか、別の環境では動作していたとかでしょうか?
>>HOtaさん
お客さんの所で動いている状態なんですが、
SQLServer2005導入時に同時にワークテーブル的な扱いで使っています。
CrystalReportでも同じくDBase(.dbf)を使ったりしています。
本社・・・サーバー機設置。
支社・・・ターミナルで本社のサーバーの中を見て、システム実行。
本社は特にエラーが出ないのですが、支社では出てきてしまいます。。。
ターミナルが悪いのか、WindowsServer2003との相性が悪いのか・・・(汗)
サンプルソースを貼り付けます。
{--------------------------------------------}
{| 初期化 |}
{--------------------------------------------}
procedure TAAA0101.DspClear;
begin
//初期化
xNum1.Value := 0;
xNum2.Value := 0;
xField1.Text := '';
xField2.Text := '';
//ワークテーブル初期化
TTable1.Close;
TTable1.EmptyTable; ←←←ここで稀にエラーが出ます。
end;
DspClearは画面の初期化処理で、起動時や入力キャンセル時等に通ります。
>本社は特にエラーが出ないのですが、支社では出てきてしまいます。。。
この環境の差は、ターミナルだと考えられます。
でも、ワークテーブルなら、それぞれのローカルでないとまずいのではないですか?
いろいろなクライアントから同じテーブルはまずいでしょう。
>>HOtaさん
すみません書き忘れてました(汗)
EXEはサーバーの中のもので、テーブルはローカルです!!
やっぱりターミナルですよね・・・(汗)
EmptyTableをもう一度通すと普通に通るので、
CNT := 0;
while True do
begin
Try
Table1.EmptyTable;
Break;
except
begin
Inc(CNT);
end;
end;
if CNT = 5 then
begin
メッセージ表示
Exit;
end;
end;
で5回まで繰り返すようなとりあえずの解決法にしておきました。
他の所でもこのような事が起こるか分からないのですが、
今のところその報告がないので対処待ち状態です!!
HOtaさん御親切にどうもありがとうございました。
一応解決?
ツイート | ![]() |