1

私はこの問題に数日を費やし、主要な調査と多くの試行錯誤を試みて解決策を見つけました。ここに私が持っているものと、私が仕事をするために必要なものがあります:

  1. TRUNCATE TABLE テーブル名 (30,000 レコード) を呼び出す SQL Server 2008 の Sproc
  2. MS Access (2010) クライアント
  3. SQLCMD ユーティリティを使用してストアド プロシージャを呼び出すバッチ ファイル

Access クライアント内で、vba/Shell() メソッドを使用してバッチ ファイルを呼び出しています。次に、バッチ ファイルは SQLCMD を使用して SQL Server に接続し、SPROC を呼び出します。

マシンから直接バッチ ファイルをクリックすると、最大 2 秒で完璧に動作します。Shell() メソッドを使用して Access 内からバッチ ファイルを実行すると、SPROC の TRUNCATE が TRUNCATE ではなく DELETE として扱われているようです。数分間アイドル状態になり、タイムアウトになり、レコードが削除されません。

数千レコードしかないテーブルで同じことをすると、約 5 秒で成功します。

「Access をクライアントとして使用しないでください」ということはわかっています。このアプリは非 IT 部門から継承したため、機能させる必要があり、再構築する資金がありません。

ここには何年も投稿していないので、プロトコルに従っていることを願っています。

事前に潜在的な解決策をありがとう、

4

1 に答える 1

0

sproc を呼び出す SQL Server エージェントでオンデマンド ジョブを設定しようとしましたか? その後、t-sql コマンドを使用してジョブを実行できます。

于 2013-06-24T23:32:00.590 に答える