恐怕这将是一个很长的故事;-(
我必须将一些文本文件读入 SQL 数据库。此数据库位于 SQL 2008 R2 x64 数据库服务器上。我想使用链接服务器,所以经过一些研究,我发现我必须安装 Microsoft.ACE.OLEDB.12.0 x64 提供程序。我在我的本地机器上做了这个,在我创建了我的链接服务器之后,我在阅读文本文件时遇到了一些麻烦。
链接服务器的提供程序设置为使用 Microsoft.ACE.OLEDB.12.0,数据源指向正确的文件夹,提供程序字符串设置为“TEXT”,但我无法测试连接。它抛出了这个错误:
无法为链接服务器“XXXXXXXXX”初始化 OLE DB 访问接口“Microsoft.ACE.OLEDB.12.0”的数据源对象。链接服务器“XXXXXXX”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“未指定的错误”。(Microsoft SQL Server,错误:7303)
经过一番研究,我发现 SQL 服务在 NETWORKING SERVICE 帐户下运行。当我将其更改为本地帐户时,一切正常。
注意:我还必须更改提供程序的一些设置,选中“允许进程内”,否则无法浏览配置数据源文件夹中的文件。
但是现在我尝试在我的客户网络上实施这个解决方案,但我无法让它工作。它也是一个 SQL 2008 R2 x64 数据库服务器,安装了 Microsoft.ACE.OLEDB.12.0 提供程序,但它仍然抛出上述错误。所以我问他们用哪个帐户来运行SQL服务。这是一个属于该服务器本地管理员组的 AD 帐户,因此据我所知,它具有足够的权限。正在测试的用户使用 Windows AD 帐户连接到数据库引擎,也属于管理员组。但是当他尝试测试连接时,它抛出了同样的错误。
我尝试的另一件事是使用 OPENROWSET,这也会产生未指定的错误。是的,我已经使用下一条语句设置了“临时分布式查询”:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)
所以在这里我得到了我的开发箱,一切正常。但是当我部署到测试服务器时,它会出现这些连接问题。其实我不知道该怎么做或检查了。我已经工作和搜索了好几天了。有没有人有其他一些建议我可以尝试?
我们创建了一个链接服务器来将 SQL Server 连接到我们的 ERP(运行 UniVerse 而不是 SQL Server)。它过去工作得很好,但现在对链接服务器的任何查询都会因 OLEDB 等待类型而陷入困境(数天)。
以前这种情况很少发生,重新启动 SQL Server 总能解决该问题。然而现在,重新启动服务器要么不能解决问题,要么最多一两个小时就能解决问题。
我们在 SQL Server 2016 和 2008 R2 中都遇到了该问题。
我们能够使用同一服务器上的其他工具以及与 SQL Server 相同的驱动程序来查询数据源。在一台服务器上,我们运行两个 SQL Server 2008 R2 实例。一种能够查询数据源,而另一种则陷入 OLEDB 等待类型。两者上的链接服务器的设置方式完全相同,并且它们使用相同的驱动程序。
我们尝试过: