Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O provedor OLE DB Microsoft.ACE.OLEDB.12.0 para servidor vinculado (nulo) retornou a mensagem O marcador é inválido.


Depois de muitas lutas com esse problema, encontrei a seguinte solução:
  1. Em servidores e caixas de 64 bits, você precisa primeiro DESINSTALAR todos os aplicativos e instâncias do Microsoft Office de 32 bits (instalação do Access 2007, Office 10 de 32 bits etc.). Caso contrário, não será possível instalar os novos componentes redistribuíveis do Mecanismo de Banco de Dados do Microsoft Access 2010 de 64 bits. Sim, é uma dor de cabeça, mas a única maneira que encontrei para instalar as novas substituições para os componentes do mecanismo JET que precisam ser executados em máquinas de 64 bits.
  2. Baixe e instale o novo componente da Microsoft:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=en
    • Isso instalará o acesso e outros mecanismos necessários para configurar servidores vinculados, arquivos Excel OPENROWSET etc.

  3. Abra o SQL Server e execute o seguinte:
    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'Ad Hoc Distributed Queries', 1;
    GO
    RECONFIGURE;
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
    GO
    
    • Isso define os parâmetros necessários para acessar e executar consultas relacionadas aos componentes. Endereço 'null

  4. Agora, se você estiver executando chamadas OPENROWSET, você precisa abandonar as chamadas, feitas usando os parâmetros antigos do JET e usar as novas chamadas da seguinte maneira:
    (*Example, importing an EXCEL file directly into SQL):
    DONT DO THIS….
    SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=YES;Database=c:\PATH_TO_YOUR_EXCEL_FILE.xls','select * from [sheet1$]')
    
    USE THIS INSTEAD…
    SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=c:\PATH_TO_YOUR_EXCEL_FILE.xls','select * from [sheet1$]')
    
    *At this point resolved two SQL issues and ran perfectly
    
  5. Agora, a parte divertida... encontre todos os seus Discos do Office e reinstale o Office e/ou os aplicativos necessários de volta na máquina. Você pode instalar a versão de 64 bits do Office 10 acessando o disco e indo para a pasta de 64 bits e executando-a, mas cuidado, pois em alguns casos alguns aplicativos de terceiros ainda não fazem interface com essa versão do Office.