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

问题描述

我收到了这个令人讨厌的错误,但事实是我在查询中没有使用任何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](用方括号纠正开括号)。而是,连接到工作簿连接中的实际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',[mySheet]) xl;
    
    -- CREATE TABLE
    SELECT xl.Col1,...
    INTO [TradeCloud].[dbo].[Adminlist] 
    FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',[mySheet]) xl;
    
    -- BROWSE CONTENTS
    SELECT * [TradeCloud].[dbo].[Adminlist];
    
  • 也许您正在尝试填充Excel工作簿?如果是这样,请注意,这些命令(OPENROWSETOPENDATASOURCE)不会填充现有的Excel工作簿,而只是连接到外部源(Excel,Access或其他数据源)作为后端来检索数据

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...