Hi all,
Well, I finally thought I'd try to ditch the dogleg through 32bit SQL Express and try to update spreadsheets (XLS) using the Microsoft.Ace.OLEDB.12.0 driver. Well, what can I say? It selects from the spreadsheet fine but as soon as I try an update statement it falls over straight away with:
(For xls as linked server)
OLE DB provider "Microsoft.Ace.OLEDB.12.0" for linked server "test" returned message "Bookmark is invalid.".
Msg 7346, Level 16, State 2, Line 2
Cannot get the data of the row from the OLE DB provider "Microsoft.Ace.OLEDB.12.0" for linked server "test".
----------------
For xls using OPENROWSET
OLE DB provider "Microsoft.Ace.OLEDB.12.0" for linked server "(null)" returned message "Bookmark is invalid.".
Msg 7346, Level 16, State 2, Line 2
Cannot get the data of the row from the OLE DB provider "Microsoft.Ace.OLEDB.12.0" for linked server "(null)".
--------------------
Just for completeness I also tried using the MSDASQL driver but that failed miserably too.
SELECT * FROM OPENROWSET('MSDASQL'
,'DRIVER=Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb);UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;ReadOnly=1;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL=excel 12.0;DriverId=1046;DefaultDir=D:\filepath\;DBQ=D:\filepath\filename.xls'
,'SELECT * FROM [NamedRange]'
)
gives
Msg 7390, Level 16, State 2, Line 2
The requested operation could not be performed because OLE DB provider "MSDASQL" for linked server "(null)" does not support the required transaction interface.
Linked server = null is interested as there is no problem if I use select.