除非文件已打开,否则OPENROWSET不起作用

时间:2018-11-20 10:41:04

标签: sql sql-server openrowset

我已经成功使用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中打开文件并保持打开状态,然后运行上面的查询,则导入工作正常。通常我的问题是相反的-如果我打开了一个文件,我将无法导入它,但是这里不是这种情况。

请注意,我还有其他几个文件可以使用同一查询成功读取。

任何帮助将不胜感激。

0 个答案:

没有答案
相关问题