OPENROWSET не работает, если файл не открыт - PullRequest
0 голосов
/ 20 ноября 2018

Я успешно использую 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затронутые строки) Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)" вернул сообщение «Внешняя таблица не в ожидаемом формате.».Сообщение 7303, уровень 16, состояние 1, строка 19 Не удалось инициализировать объект источника данных поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(ноль)".

ФайлCSV (с разделителями-запятыми), сохраненный локально на том же компьютере, на котором работает SQLServer.Сам файл загружается с общего ресурса FTP.

Теперь сложная часть - если я открою файл в excel и оставлю его открытым, а затем выполню приведенный выше запрос, импорт будет работать нормально.Обычно у меня другая проблема - если у меня открыт файл, я не могу его импортировать, но это не тот случай.

Обратите внимание, что у меня есть несколько других файлов, которые яв состоянии успешно читать, используя тот же запрос.

Любая помощь будет оценена.

...