1

フォーム、マクロ、およびモジュールを備えた Microsoft Access 2016 フロントエンドを備えたローカルで SQL Server 2012 Express を使用するアプリがあります。多くの写真を含む検査データを収集するために現場で使用されます。問題は、メインのリモート SQL Server 2012 に挿入するときにエラーが発生することです。

Microsoft ODBC SQL Server ドライバー エラー: クエリのタイムアウトが期限切れになりました

ユーザーが 3 枚以上の写真を添付し​​た場合。

これまでのところ、リモート SQL Server (Properties\Connections) でリモート クエリのタイムアウトを上げようとしましたが、サーバーの更新間隔を 240 秒 (Tools\Options) に上げました。Access の SQL 関数の VBA にコードを追加しました。

Dim Conn As ADODB.Connection
Set Conn = New ADODB.Connection
Conn.ConnectionTimeout = 120

また、アプリの起動時に実行される AutoExec マクロに次の関数を追加しました。

Function SetTimeout()
      Dim Mydb As Database
      Set Mydb = CurrentDb
      Mydb.QueryTimeout = 640
  End Function

最後に、VBA の接続文字列の末尾に「Connection Timeout=90」を追加しました。

Server=localhost\SQLEXPRESS2012;Database=DamInspector; 

テスト更新スクリプトの実行には 67 秒しかかかりませんが、「0」(無限) から 1024 までのさまざまな時間を試しました。特定の実行時エラーは「-2147217871 (80040e31)」です [Microsoft][ODBC SQL Server Driver]クエリのタイムアウトが期限切れになった
おそらく別の方法でしょうか?
11 人のインスペクターが同期する必要がある 14 のテーブルがあります。7つのテーブルは写真用です。リンクされたテーブルを介して VBA でスクリプトを作成するよりも、SQL Express のローカル インスタンスごとにストアド プロシージャを実行する方がよいでしょうか?

4

1 に答える 1