1、出现这种问题一般都是因为缺少AccessDatabaseEngine组件造成,不确定自己是否已经安装或者不知道自己已经瀚柏围歪安装哪个版本的,可以打开SQL Server management studio,在"对象资源管理器"中依次展开“服务器对象”--"链接服务器"--“访问接口”,查看服务器列表中是否有“Microsoft.ACE.OLEDB”。如果没有的话就继续往下看,安装对应组件,做好相关设置即可。如果已经存在相应组件,但仍然不能正常导入xlsx文件,则可直接跳到第五步解决。
2、确定系统环境。首先要确定自己电脑操作系统是64位还是32位(“我的电脑”右键,点“属性”),然后确定已安装的office套件的位数。如果操作系统是32位的,那office就一定是32位,则可直接看下一步。如果系统是64位,而你不知道怎么看office是多少位的,可以先运行EXCEL程序,然后打开任务管理器(快捷键ctrl+alt+esc),找到excel的进程,如果进程后没有"(32位)"字样,那就是64位的。
3、安装AccessDatabaseEngine组件。直接百度搜索Microsoft Access Database Engine,推荐下载最新的"Microsoft Access Database Engine 2016",最好选择微软官方链接下载。下载注意正确选择位数版本,如果是32位操作系统,直接下载32位即可。如果是64位操作系统,若office是32位,还是下载32位,若office是64位,则下载64位的,不要选错了。 下载完成后直接安装。
4、正确设置程序。首先在系统服务中找到SQL Server,右键--属性,选择“登录”选项卡,把“登录身份”设置为“本地系统账户”。 打开SQL Server management studio,找到访问接口中的Microsoft.ACE.OLEDB,右键--属性,选中“动态参数”及“允许进程内”。设置完成后进行最后一步,也是特别容易被忽略的一步,这里没注意经常会让你折腾半天都没用。
5、尝试导入数据。在SQL Server management studio中右击某个数据库,依次点击“任务”--"导入数据",选中要导入的xlsx表格文件,选择正确的excel版本。 如果安装的是Microsoft.ACE.OLEDB 12.0,选择2007-2010,如果安装的是Microsoft.ACE.OLEDB 16.0,选择2016。选择好后点击下一步,此时可能会出现“外部表不是预期的格式”的错误,到这里不要慌,既然没提示缺少组件,那刚才的安装应该是成功了的,肯定是哪里的设置出了问题,此时我们先把需要导入的excel表打开,再尝试,一般都能顺利导入。 如果还是不行再继续往下看。
6、如果你安装的SSMS版本是18.x(1瀵鸦铙邮6.x和17.x未进行安装测试,如有相同情况也可按照本经验操作),你会发禊耗髻编现不管你的SQL是64位还是32位,SSMS都是32位的,在SSMS程序中调用的导入导出数据向导也是32位的,而如果电脑中安装的office是64位的话,是无法正确识别AccessDatabaseEngine组件的。这时候我们只需要找到64位的导入导出数据工具,手动运行即可。 具体方法如下:打开WINDOWS开始菜单,找到Microsoft SQL Server的目录,我这里是Microsoft SQL Server 2017,点开目录,你会发现这里有两个“导入和导出数据”工具。将鼠标移动至相应条目上就能看到是32位还是64位了,我们手动运行64位的导入导出工具,再按第五步方法即可成功导入。
7、如果office是64位的,但你还是更习惯直接在SSMS中使用导入导出工具的话,也可以安装低版本的32位AccessDatabaseEngine组件,比如我的office是2019版64位的,我安装了Microsoft Access Database Engine 2010(对应Microsoft.ACE.OLEDB 12.0)32位,安装完毕后在SSMS的服务器访问接口列表中是看不到对应项的,但是按照第五步的方法导入也能成功。