无DNS连接字符串升级至SQL Server Driver 11.0失败问题排查
你的ODBC驱动与日期类型显示问题全解析
先帮你理清楚这几个问题的来龙去脉,一步步解决:
一、为什么旧驱动能用,SQL Server Native Client 11.0却不行?
先看你的两段连接代码:
旧驱动(正常运行):
stConnect = "ODBC;Driver={SQL Server};Server=" & stServer & ";Database=" & stDatabase & ";Trusted_Connection=True;"
新驱动(无法运行):
stConnect = "ODBC;Driver={SQL Server Native Client 11.0};Server=" & stServer & ";Database=" & stDatabase & ";Trusted_Connection=True;"
核心原因大概率是驱动没装对或者位数不匹配:
- 旧的
{SQL Server}驱动是Access默认自带的兼容驱动,而SQL Server Native Client 11.0(简称SNAC 11.0)是单独的组件,默认不会随Access 365一起安装,得手动下载安装。 - 还要注意位数匹配:Access 365默认是32位版本,如果你装了64位的SNAC驱动,系统会找不到它;反过来,如果你的Access是64位,就得装64位的SNAC。你可以打开Access,通过「文件→账户→关于Access」查看自己的版本位数。
另外,你可以打开对应位数的ODBC数据源管理器验证:32位的话找C:\Windows\SysWOW64\odbcad32.exe,64位找C:\Windows\System32\odbcad32.exe,看看驱动列表里有没有SQL Server Native Client 11.0——没有的话肯定用不了。
二、SQL Server日期类型在Access里显示成短文本,确实是驱动的锅
你的判断完全正确!
- 旧的
{SQL Server}驱动比较老旧,对SQL Server的新日期类型(比如date、datetime2)支持很差,会把这些类型强制映射成Access的短文本。 - 而SNAC 11.0是专门适配SQL Server 2008及以上版本的驱动,能正确识别这些日期类型,把它们映射成Access的「日期/时间」类型。不过有个前提:你得先解决驱动无法运行的问题,而且要删除旧的链接表,重新用新驱动创建链接——因为Access会缓存旧链接表的字段类型,不重新创建的话,即使换了驱动也不会更新显示。
三、需要更新SQL Server端吗?完全不用
你的问题全出在Access客户端的驱动配置上,和SQL Server本身没关系。只要你的SQL Server版本是2008或更高(SNAC 11.0支持的最低版本),服务器端啥都不用改,只需要在Access这边搞定驱动就行。
快速解决步骤总结
- 确认Access 365的位数(32/64位);
- 下载对应位数的SNAC 11.0安装包并安装;
- 用ODBC数据源管理器验证驱动是否安装成功;
- 删除旧的SQL Server链接表,用新的驱动连接字符串重新创建链接;
- 重新查看日期字段,应该就能正常显示为日期类型了。
内容的提问来源于stack exchange,提问作者Stormer
相关产品推荐
相关产品推荐

