繁体   English   中英

链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“JOIN 操作中的语法错误”。

[英]OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server “(null)” returned message “Syntax error in JOIN operation.”

我收到了这个烦人的错误,但问题是我没有在查询中使用任何 JOIN 操作。 这是片段:

   ('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\Users\tcmnoc\Desktop\Test.xlsx;','SELECT * FROM ([TradeCloud].[dbo].[Adminlist]')
   Select * from [TradeCloud].[dbo].[Adminlist]```

假设您的代码段来自OPENROWSET查询,您正在合并数据源,您试图在 Excel 连接中引用 SQL Server 表。 连接到 Excel 工作簿作为数据源时,您只能引用 Excel 工作表,而不能引用 SQL Server 表。

因此,无法识别此来源: [TradeCloud].[dbo].[Adminlist] (用方括号更正[TradeCloud].[dbo].[Adminlist]括号)。 相反,连接到工作簿连接内的实际 Excel 工作表,将命名引用置于连接字符串之外。 下面的查询(在您调整mySheet 后应该可以检索仅限 Excel 的数据):

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                'Excel 12.0; Database=C:\Users\tcmnoc\Desktop\Test.xlsx;',
                [mySheet])

没有更完整的上下文,我考虑以下假设:

  • 也许 Excel 已连接到[TradeCloud].[dbo].[Adminlist]表? 如果是这样,您需要与数据库和架构建立单独的直接连接以访问表(绕过 Excel,它只是另一个客户端连接)。

  • 也许您打算填充现有的 SQL Server 表? 如果是这样,请运行所需的 append 或 create-table 命令,然后浏览其内容:

     -- APPEND TO TABLE INSERT INTO [TradeCloud].[dbo].[Adminlist] (Col1, Col2, Col3, ...) SELECT xl.Col1, xl.Col2, xl.Col3, ... FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; Database=C:\\Users\\tcmnoc\\Desktop\\Test.xlsx;', [mySheet]) xl; -- CREATE TABLE SELECT xl.Col1, xl.Col2, xl.Col3, ... INTO [TradeCloud].[dbo].[Adminlist] FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; Database=C:\\Users\\tcmnoc\\Desktop\\Test.xlsx;', [mySheet]) xl; -- BROWSE CONTENTS SELECT * [TradeCloud].[dbo].[Adminlist];
  • 也许您正在尝试填充 Excel 工作簿? 如果是这样,请注意,这些命令( OPENROWSETOPENDATASOURCE )不会填充现有的 Excel 工作簿,而只是连接到外部源(Excel、Access 或其他数据源)作为检索数据的后端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM