使用 SQL Server 后端访问前端,适用于某些机器,而不适用于其他机器

Posted

技术标签:

【中文标题】使用 SQL Server 后端访问前端,适用于某些机器,而不适用于其他机器【英文标题】:Access frontend with SQL Server backend, works on some machines, not others 【发布时间】:2018-03-01 23:01:40 【问题描述】:

我正在将我公司的计时系统从旧的、缓慢的 Access 后端迁移到快速、快速的 SQL Server 后端。但我发现,虽然前端连接到我的机器或少数其他机器上的后端没有问题,但在这里的大多数机器上,它似乎根本不起作用。

我正在使用CreateTableDef 方法链接表,发现here。 AutoExec 宏在启动时建立表。在我的机器上,运行带有 Access 2016(版本 1801,内部版本 9001.2171)的 Windows 7 Professional 64 位,它打开时没有问题。店里的另一台相当不同的机器运行 Windows XP 32 位和 Access 2010 数据库运行时引擎(这台机器没有完整版的 Office,只有运行时)也可以正常工作。

然而,办公室中的其他计算机在打开 .mdb 文件时,运行相同版本的 Office,Windows 7 或 10,始终为 64 位和专业版,无法连接到 SQL Server。

在一种情况下,Access 最多会挂起 30 分钟,然后才会退出

ODBC--连接到“(此处的服务器名称)”失败。

我尝试在 Access 尝试建立连接时运行服务器分析器,但我看到的是服务器显然根本没有看到连接尝试。这台特定的机器还运行一个用 VC# 编写的单独实用程序来连接和操作数据库,该数据库运行顺利。只有在 Access 前端,我才会遇到问题。

所以,总结一下:

Microsoft SQL Server 后端 访问前端 Access前端在某些机器上连接没有问题,在其他机器上连接失败。 用 VC# 编写的单独实用程序在任何地方都可以正常工作,包括 Access 前端不工作的机器。 服务器上的 Profiler 跟踪未显示 Access 前端似乎无法正常工作的计算机正在尝试连接。

我试过安装 Access 数据库引擎,我试过在一台机器上安装 SSMS(没有骰子),我已经安装了尽可能多的 Microsoft 不同的 ODBC 驱动程序,但似乎没有任何区别.我倾向于认为问题不在于驱动程序,而是某种与网络相关的问题,并且以某种方式特定于 Access。

有什么想法吗?是否有一些我不知道的神秘软件要求?

【问题讨论】:

我想我应该注意,在它似乎不起作用的机器上,在“ODBC--连接失败”错误完成后,它会要求输入用户名和密码,说的信息已经填好了。在这个阶段,点击OK,虽然什么都不做,但会建立所有的连接,它显然会工作。然而,随着时间的推移,这种联系会断开。连接和丢弃之间的间隔不是立即明显的。 请提供您正在使用的实际代码(包括经过审查的服务器名、用户和密码的连接字符串) 另外,您也没有提及您的网络是否受 Active Directory 管理。您也没有提到所有用户是否共享相同的前端文件。 此网络是 Windows 域,由 Windows Server 2008 SBS 域控制器运行。所有用户都使用相同的 .mdb 文件。连接字符串由我的帖子中链接的 VBA 脚本生成。用户使用 SQL Server 身份验证登录,用户名和密码被硬编码在 AutoExec 宏中,它为每个链接的表调用一次 AttachDSNLessTable。我也尝试过使用 Windows 身份验证,但这并没有改变结果。我觉得一个重要的线索是,当我使用 SQL Server Profiler 时,最初的连接尝试没有出现。 【参考方案1】:

所以,我找到了this 线程,有人在第一次尝试连接时遇到了问题。原来这是一个防火墙问题。通过确定 SQL Server 实例正在使用的端口,并在防火墙中明确打开它,所有连接问题显然都消失了。为什么它在某些计算机上没有问题,我仍然不知道,但是在进行此更改后,一切都按预期进行。

【讨论】:

以上是关于使用 SQL Server 后端访问前端,适用于某些机器,而不适用于其他机器的主要内容,如果未能解决你的问题,请参考以下文章

访问连接到 Azure SQL Server 后端的本地前端非常慢

MS Access 前端与 SQL Server 后端查询存储最佳实践 [关闭]

SQL Server 后端和 Access 前端 - 与 SQL Server 本机客户端的 ODBC 连接失败

多个 MS Access 前端连接到单个远程 SQL Server 后端

SQL-Server 后端、MS Access 前端:连接

连接到sql server的access前端输入图片