Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从SQL Server连接到MS Access数据库时出现的问题_Sql Server_Ms Access - Fatal编程技术网

Sql server 从SQL Server连接到MS Access数据库时出现的问题

Sql server 从SQL Server连接到MS Access数据库时出现的问题,sql-server,ms-access,Sql Server,Ms Access,环境:Windows Server 2016、SQL Server 2016;MS Access.accdb文件(各种版本) 试图通过oledb建立一个链接到.accdb文件内容的服务器,如下所示: EXEC master.dbo.sp_addlinkedserver @server = N'redacted', @srvproduct = N'', @provider = N'Microsoft.ACE.OLEDB.16

环境:Windows Server 2016、SQL Server 2016;MS Access
.accdb
文件(各种版本)

试图通过oledb建立一个链接到
.accdb
文件内容的服务器,如下所示:

EXEC master.dbo.sp_addlinkedserver 
            @server = N'redacted',
            @srvproduct = N'',
            @provider = N'Microsoft.ACE.OLEDB.16.0',
            @datasrc = N'D:\AccessTest\redacted.accdb',
            @provstr = N'Jet OLEDB:Database Password=redacted;'
这会导致一个错误:

链接服务器“编辑”的OLE DB提供程序“Microsoft.ACE.OLEDB.16.0”报告了一个错误。提供程序报告了意外的灾难性故障。(Microsoft SQL Server,错误:7399)

尝试的修复程序:

  • 不同的提供程序字符串,如'Uid=;普华永道
  • 检查是否安装了AccessDB引擎(64位)
  • 已将数据库移动到本地驱动器(从网络)
  • OLE提供程序将“允许Inprocess”设置为true
数据库似乎可以通过MS Access前端访问。没有腐败的迹象


有什么想法吗?

只是一个想法,试试:
@srvproduct='Access',@provider='Microsoft.Jet.OLEDB.4.0',
我不相信有
Microsoft.ACE.OLEDB.16.0
但是
Microsoft.ACE.OLEDB.12.0
@Parfait这些对应于MS Access的版本。它们被宣传为向后兼容。我已经试过版本12。您可以在这里获取版本16:@sniperd我没有看到列出该提供商,但我会看看是否可以将其挖掘出来,并让您知道它是如何运行的。我怀疑这个问题与SQL server帐户权限有关。@AlexanderToptygin。。。我在MS Access工作了很长时间。2016年与旧版EB.16.0不同。请查看您的链接的安装说明,其中提到要用于OLEDB的Microsoft.ACE.OLEDB.12.0。这将处理Access.accdb文件(2007-2016)。另一个
Jet.OLEDB.4.0
用于较旧的.mdb文件(