フォーム、マクロ、およびモジュールを備えた 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 のローカル インスタンスごとにストアド プロシージャを実行する方がよいでしょうか?