양식, 매크로 및 모듈과 함께 Microsoft Access 2016 프론트 엔드를 사용하는 로컬에서 SQL Server 2012 Express를 사용하는 응용 프로그램이 있습니다. 현장에서 많은 사진을 포함하여 검사 데이터를 수집하는 데 사용됩니다. 문제는 주 원격 SQL Server 2012에 다음과 같은 오류가 발생합니다. 사용자가 3 장 이상의 사진을 첨부하면MS Access 2013, SQL Server 2012 Express, 쿼리 시간 초과
Microsoft ODBC SQL Server Driver error: Query timeout expired
입니다.
지금까지 원격 SQL Server (Properties \ Connections)에서 원격 쿼리 시간 초과를 시도했지만 서버 새로 고침 간격을 240 초 (Tools \ Options)로 늘 렸습니다. 나는 Access에서 SQL 기능의 VBA 코드를 추가했습니다 :
Dim Conn As ADODB.Connection
Set Conn = New ADODB.Connection
Conn.ConnectionTimeout = 120
그리고 응용 프로그램이 시작될 때 나는 실행되는 자동 실행 매크로에 다음과 같은 기능을 추가했습니다 : 마지막으로 나는
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