Access O365能否复用Excel的OLE DB连接串连接SQL AG监听器?
Access连接SQL Server AG监听器的连接串适配方案
问题背景
我用的是MS Access O365,之前靠无DSN连接(DSN-less)连SQL Server 2019的链接表。现在换成Availability Group(AG)监听器连接,在ODBC连接串里加了MultiSubnetFailover=Yes,但差不多一半时间会超时,直接连单服务器却100%成功。之前Excel用Microsoft OLE DB Provider连同一个监听器也遇到过类似问题,加了Connect Timeout=60;就正常了。现在有个能用的Excel连接串:
"Provider=MSOLEDBSQL;Data Source=MyServerListenerName,1234;Initial Catalog=MyDatabase;Integrated Security=SSPI;MultiSubnetFailover=Yes;Connect Timeout=60;"
想知道这个连接串能不能直接或者改一改给Access链接SQL表用?如果可以,具体怎么操作?
适配方案
这个Excel的OLE DB连接串改完就能给Access用,具体调整和操作步骤如下:
1. 连接串调整要点
- 把外层的双引号去掉(Access链接表的连接串不需要这层引号)
- 核心参数全部保留,调整后的最终连接串是:
Provider=MSOLEDBSQL;Data Source=MyServerListenerName,1234;Initial Catalog=MyDatabase;Integrated Security=SSPI;MultiSubnetFailover=Yes;Connect Timeout=60;
2. 操作步骤(两种可选方式)
方式一:通过Access界面手动创建
- 打开Access O365,点顶部的外部数据选项卡,选ODBC数据库
- 在弹出的窗口里选链接到数据源创建链接表,点确定
- 跳转到“选择数据源”窗口后,切到机器数据源标签,选
<新数据源>,点下一步 - 选用户数据源,点下一步,找到
Microsoft OLE DB Driver for SQL Server(对应连接串里的MSOLEDBSQL驱动),点下一步完成数据源创建 - 接下来在“连接到SQL Server”窗口里,输入AG监听器的名称加端口(比如
MyServerListenerName,1234),选Windows身份验证,点下一步 - 选中目标数据库
MyDatabase,点下一步 - 点窗口里的选项按钮,勾选MultiSubnetFailover,把登录超时改成60秒,点确定完成数据源配置
- 最后回到链接表选择窗口,挑你要链接的SQL表,点确定就搞定了
方式二:用VBA代码批量/快速创建
按Alt+F11打开Access的VBA编辑器,运行下面的代码(记得把占位符换成你自己的信息):
Sub CreateAGLinkedTable() Dim db As Database Dim tdf As TableDef Dim connStr As String Set db = CurrentDb() ' 用调整后的连接串 connStr = "Provider=MSOLEDBSQL;Data Source=MyServerListenerName,1234;Initial Catalog=MyDatabase;Integrated Security=SSPI;MultiSubnetFailover=Yes;Connect Timeout=60;" ' 创建链接表定义,替换成你想要的本地链接表名 Set tdf = db.CreateTableDef("MyLinkedTable") tdf.Connect = connStr ' 替换成SQL Server里的真实表名 tdf.SourceTableName = "SQLServer_TableName" ' 把链接表添加到当前数据库 db.TableDefs.Append tdf MsgBox "链接表创建成功!" End Sub
3. 注意事项
- 要确保你的Access客户端已经装了Microsoft OLE DB Driver for SQL Server(MSOLEDBSQL驱动),没装的话得先下载安装对应版本
- 如果还是超时,可以试试把
Connect Timeout调得更长一点,比如90秒 - 优先用OLE DB连接而不是ODBC,AG监听器的多子网故障转移在OLE DB驱动下兼容性更好
内容的提问来源于stack exchange,提问作者Todd
相关产品推荐
相关产品推荐

