【发布时间】:2022-04-20 06:18:07
【问题描述】:
我正在尝试运行以下语句,但收到下面的错误消息。我研究了无止境的答案,但没有一个对我有用。我正在运行 Office 365(64 位)。我已经加载了 Microsoft Access 数据库引擎(64 位)。这是在带有 SSDT 以及 SQL Server 2012 的 Visual Studio 2013 中。我无权更改 SQL Server 的环境或启动参数。任何帮助表示赞赏。
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.15.0',
'Excel 12.0;Database=C:\Users\UserName\Folder\SomeFile.xlsx;;HDR=NO;IMEX=1', [Table 1$])
- 消息 7399,级别 16,状态 1,第 1 行 OLE DB 提供程序 链接服务器“(null)”的“Microsoft.ACE.OLEDB.15.0”报告了一个 错误。提供者没有提供有关错误的任何信息。
- 消息 7303,级别 16,状态 1,行 1 无法初始化数据源 用于链接的 OLE DB 提供程序“Microsoft.ACE.OLEDB.15.0”的对象 服务器“(空)”。
这是我尝试过的:
首先,我跑了……
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
跟着……没有爱。
EXEC sys.sp_addsrvrolemember @loginame = N'<<Domain\User>>', @rolename = N'sysadmin';
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'DynamicParameters', 1
GO
我已将代码更改为 Microsoft.ACE.OLEDB.12.0,正如我所看到的那样,仍然没有爱。
我还检查了 C:\Users\MSSQLSERVER\AppData\Local\Temp 和 C:Windows\ServiceProfiles\NetworkService\AppData\Local 的权限,这些权限已授予以下权限:系统、MSSQLSERVER 和管理员、网络服务(关于后者)。
还是没有爱。
最后,我尝试换成 32 位版本的 Microsoft Access 数据库引擎,但一直无法正常工作。
帮忙,有人吗?
【问题讨论】:
-
为了好玩,试试
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\UserName\Folder\SomeFile.xlsx;Extended Properties="Excel 12.0 Xml;HDR=NO;"我一直在使用它和 ADODB 来查找 excel 2007 和 2010 文件,并且很幸运。 -
您能演示一下如何将这一行合并到我上面的 SELECT 语句中吗?如果不以某种方式反对格式,我将无法完全理解它。谢谢!
-
这可能有效。我不熟悉 Visual Studio 中的 OPENROWSET 语法,但我一直使用 ADODB 库。
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Source=C:\Users\UserName\Folder\SomeFile.xlsx;Extended Properties="Excel 12.0 Xml;HDR=NO;"', [Table 1$]) -
在我的情况下,它可以使用“sa”帐户连接到 Sql 服务器。每次我从 Sql 服务器打开 excel 文件时,我都需要连接“sa”帐户。不是windows帐户。特别是在我的情况下,我在报表设计器中有一个报表。我必须在解决方案资源管理器中进入“共享数据源”,打开带有连接的 rds 文件。在那里我打开了“凭据”选项卡并使用“sa”帐户进行了修改。
标签: sql visual-studio-2013 openrowset