【发布时间】: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 时,最初的连接尝试没有出现。
标签: sql-server ms-access odbc