私は、フォーム、マクロ、およびモジュールでMicrosoft Access 2016フロントエンドを使用してローカルでSQL Server 2012 Expressを使用するアプリケーションを持っています。多くの写真を含む検査データを収集するために現場で使用されています。ユーザーが3枚の以上の写真を添付した場合MS Access 2013、SQL Server 2012 Express、クエリタイムアウト
Microsoft ODBC SQL Server Driver error: Query timeout expired
:問題は、メインリモートのSQL Server 2012に挿入するとき、私はエラーを取得するということです。
これまでリモート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での接続文字列の末尾に 『接続タイムアウト= 90』を追加まし:
Server=localhost\SQLEXPRESS2012;Database=DamInspector;
テスト更新スクリプトのみを実行するために67秒かかりますが、私は( 『0』から時間のさまざまな長さを試してみました無限大)から1024彼は特定の実行時エラー '-2147217871(80040e31)' [Microsoft] [ODBC SQL Serverドライバ]クエリのタイムアウトが終了しました
おそらく別の方法ですか?
私は11人の検査官によって同期されなければならない14のテーブルを持っています。表の7つは写真用です。リンクテーブルを介してVBAでスクリプトを作成するのではなく、SQL Expressのローカルインスタンスごとにストアドプロシージャを実行する方が良いでしょうか?
ここでは別のアプローチが必要だと思います。 ODBCクエリは、潜在的に不安定なネットワーク上で(ネットワーク速度と比較して)非常に多くのデータを転送するのには本当に適していません。何らかのバックグラウンド転送(FTP?) – Andre
テーブル内に写真ファイルではなくBLOBデータをアップロードしています。 – DLWyer
はい、私は理解しています、それはIMHOの問題です。私は、データベースに写真をまったく格納しない、または別のチャンネルを介してアップロードした後にサーバープロセスで挿入するという、非常に異なるアプローチを意味していました。 – Andre