segunda-feira, 22 de julho de 2013

SQL Server - Erro ao fazer INSERT OPENROWSET: "Cannot update. Database or object is read-only"

O erro "OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)" returned message "Cannot update.  Database or object is read-only." " ocorre ao tentar inserir registros de uma tabela em um arquivo do Excel.

Solução: retire o parâmetro IMEX=1 ou deixe-o IMEX=0.

Desta forma irá funcionar:
--------------------------
    INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=c:\teste.xls;HDR=YES;IMEX=0',
'Select Campo1, Campo2 From [Plan1$]')      
    Select Campo1
          ,Campo2
         from Tabela
------------------------

Obs: IMEX=1 funciona apenas para SELECT.