首页 > 解决方案 > MS Access 与 SQL Server (2016) 的连接突然失败

问题描述

我很迷茫,所以我向你寻求帮助。

我正在开发 MS Access 2016 数据库前端。此 FE 使用MS SQL Server (2016)后端,使用 ODBC 连接到表。

情况如下:

我打开一个表格“ myform_A”,显示表格中的数据。

我单击一个在后台启动某个进程的按钮。此过程还需要(第二个)表中的一些数据:tblMitarbeiter. 此表如果不是表格的来源。

突然间 - 但不幸的是,在 95% 的情况下,Access 告诉我发生了错误 3146(ODBC 超时)。

使用 Access 导航栏可以访问所有表,以及我在流程中需要一些数据的表(第二个表)。这些表的 ODBC 有效。...但使用 VBA 的连接不起作用(但会引发错误 3146)。

问题发生在不同的机器上,通过 LAN 和 VPN 并在线路上失败:

Set rstMitarbeiter = dbsMitarbeiter.OpenRecordset(strSQL, dbOpenSnapshot)

ID_Mitarbeiter在运行时可用。

ODBC 连接字符串:

ODBC;DRIVER={ODBC Driver 13 for SQL Server};SERVER=192.168.100.19;DATABASE=MYDBNAME;Max Pool Size=100;UID=myusername;PWD=secretPW

请注意:

我有

所以——我能做什么?

错误可能隐藏在哪里?

有什么想法/建议吗?

非常感谢你。

我在第二张桌子上运行的代码(在按下按钮后的进程中)是

Dim dbsMitarbeiter As DAO.Database
Dim rstMitarbeiter As DAO.Recordset

Dim strSQL As String
strSQL = "SELECT TOP 1 * FROM tblMitarbeiter WHERE ID_Mitarbeiter=" & ID_Antragsteller & ";"

Set dbsMitarbeiter = CurrentDb()

dbsMitarbeiter.QueryTimeout = 60
Set rstMitarbeiter = dbsMitarbeiter.OpenRecordset(strSQL, dbOpenSnapshot)      

Do While Not rstMitarbeiter.EOF
    somevar = Nz(rstMitarbeiter.Fields("myfield"), 0)
    someothervar = Nz(rstMitarbeiter.Fields("someotherfield"), 0)
    rstMitarbeiter.MoveNext
Loop

rstMitarbeiter.Close
If Not rstMitarbeiter Is Nothing Then Set rstMitarbeiter = Nothing
dbsMitarbeiter.Close
If Not dbsMitarbeiter Is Nothing Then Set dbsMitarbeiter = Nothing

标签: sql-serverms-accessconnectionodbc

解决方案


推荐阅读