1

私は患者_クリニック_訪問をリストするテーブルを持っています。SQLSERVER 2005 バックエンドがあります。Access2010 フロントエンド。

このテーブルは毎朝、病院のメインフレームからのデータ ダンプから更新する必要がありました。

このデータ ダンプには、前日の情報 (誰が出席したか、欠席したか、キャンセルしたか) と次の 6 週間の予定が含まれています。

したがって、"DELETE * from Patient_clinic_visits where Visit_Date > (日) and < (日 + 1) を実行して、処理後に新しいデータをアップロードする前に、毎日テーブルを順番に消去します。

ほとんどの日には、1 日あたり約 100 ~ 150 のレコードしかありません。それらは、NO_ACTION チェーンを持つ Master_Patient_Table の Pat_ID への 1 つの外部キーです。

現時点では、この削除クエリは、数日間のデータを処理した後、Access フロントエンドでタイムアウトになっています (つまり、月曜日、火曜日、水曜日に問題なく動作します...)

sp_whoisactive を実行すると、次のようになります。

00 01:53:01.926 52 [[query SELECT 1 FROM "dbo"."Patient_Clinic_Visits" ]] RAHCC_User (265ms)ASYNC_NETWORK_IO 0 0 0 NULL 51 0 0 2 中断 0 NULL SAH0020663 RAHCC_DB Microsoft MDB RAHCC 2013-04-02 09: 08:33.027 0 2013-04-02 11:01:35.033

00 00:00:27.610 53 [[クエリ -- 診療所の日付 >= '2013 年 3 月 26 日' AND 診療所の日付 < '2013 年 3 月 27 日' AND 診療所の場所 = 'MONC' ]] HAD\jhogan05 (27596ms) LCK_M_IX 16 0 0 52 1,074 0 0 130 中断 2 NULL SAH0048645 RAHCC_DB Microsoft SQL Server Management Studio Express - クエリ 2013-04-02 11:01:07.343 0 2013-04-02 11:01:35.033

これは、クライアントのフロント エンドが「Patient_Clinic_Vists からの SELECT 1」を待機しており、これが手順をブロックしていることを示しています。どうやらこれはクライアントの ASYNC_NETWORK_IO によるものです (これは、Access フロント エンドがテーブル リクエストを実行してからデータを処理しない場合に発生する可能性があります)。

a) しかし、「Patient_Clinic_Visits からの SELECT 1」は、実際には TRUE または FALSE のみを返す必要がありますか?? これは何かを埋める可能性が低く、ブロック状況を引き起こす理由が不明です??

b) Access フロントエンドのどこにも「SELECT 1...」が見つかりません。これは、より複雑な選択に応じて SQLSERVER によって行われた一連のサブ選択の一部ですか? もしそうなら、そのプロセス履歴でこの状況を引き起こしている真の選択をどのように見つけますか?

乾杯、

ジョンHD


私はおそらくあなたがしたいと思いますdata[0].idか?

4

1 に答える 1