开放行集函数失败



我正在执行这个openrowset函数:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
    'Excel 12.0;Database=C:UsersJCPABALANDesktopData MigrationListOfDiscards.xlsx;HDR=YES', 
    'SELECT * FROM [Sheet1$]')

但它给了我以下错误

链接服务器"(空)"的 OLE DB 提供程序"Microsoft.ACE.OLEDB.12.0"返回消息"Microsoft Access 数据库引擎找不到对象 'Sheet1$'。确保对象存在,并且正确拼写其名称和路径名。如果"Sheet1$"不是本地对象,请检查网络连接或与服务器管理员联系。
Msg 7350,级别 16,状态 2,第 1
行 无法从链接服务器"(空)"的 OLE DB 提供程序"Microsoft.ACE.OLEDB.12.0"获取列信息。

我已经将Ad Hoc Distributed Queries设置为 1 并安装了 Microsoft ACE 并执行了以下代码行:

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 
GO

但它仍然行不通。

错误消息分为两部分:

链接服务器"(空)"的 OLE DB 提供程序"Microsoft.ACE.OLEDB.12.0"返回消息"Microsoft Access 数据库引擎找不到对象 'Sheet1$'。确保对象存在,并且正确拼写其名称和路径名。如果"Sheet1$"不是本地对象,请检查网络连接或与服务器管理员联系。

Msg 7350,级别 16,状态 2,第 1 行 无法从链接服务器"(空)"的 OLE DB 提供程序"Microsoft.ACE.OLEDB.12.0"获取列信息。

第二部分是因为第一部分的错误,所以你的主要错误在第一部分,这告诉我们:

Microsoft Access 数据库引擎找不到对象"Sheet1$"。确保对象存在,并且正确拼写其名称和路径名。如果"Sheet1$"不是本地对象,请检查网络连接或与服务器管理员联系。

一些常见的原因和解决方案如下:

  • 路径不存在:文件或路径C:UsersJCPABALANDesktopData MigrationListOfDiscards.xlsx不存在;
    注意:SQL Server C:指的是\ServerC$,所以如果你使用的是SSMS,并且你注册了一个Server并连接到它,那么你的路径就不存在了。
    文件
  • 权限被拒绝:文件或路径C:UsersJCPABALANDesktopData MigrationListOfDiscards.xlsx具有可以从 SQL Server 服务帐户访问它们的安全级别,您可以授予对 SQL Server 服务帐户的访问权限。

  • 工作表
  • 名称无效:工作表Sheet1不是工作簿工作表中的有效工作表名称,您可以更改其名称。

相关内容

  • 没有找到相关文章

最新更新