我已经成功使用OPENROWSET已有一段时间了,但是现在遇到了我无法解决的问题。我正在运行SQL Server 2017 Express。
我正在运行以下查询:
SET @SQL = '
INSERT INTO MyTable SELECT *
FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',
''Excel 12.0; HDR=YES; FIRSTROW=1; FORMAT=CSV Database='+@filePath+''',
''SELECT * FROM [MyFile_'+@MonthNo+@YearNo+'$A1:I5000]'')'
exec (@SQL)
我收到的错误消息是:
(影响0行) 链接服务器“(null)”的OLE DB提供程序“ Microsoft.ACE.OLEDB.12.0”返回了消息“外部表格式不正确。”。 Msg 7303,第16级,状态1,第19行 无法为链接服务器“(null)”初始化OLE DB提供程序“ Microsoft.ACE.OLEDB.12.0”的数据源对象。
该文件是CSV(以半冒号分隔),本地存储在与SQLServer运行时相同的计算机上。 文件本身是从FTP共享下载的。
现在最棘手的部分-如果我在excel中打开文件并保持打开状态,然后运行上面的查询,则导入工作正常。通常我的问题是相反的-如果我打开了一个文件,我将无法导入它,但是这里不是这种情况。
请注意,我还有其他几个文件可以使用同一查询成功读取。
任何帮助将不胜感激。