Você instalou o Microsoft SQL Server 2008 R2 (64-bit), baixou o Microsoft Access Database Engine 2010 Redistributable versão x64, descobriu que precisa desinstalar o Office x86 para poder instalar a versão de 64-bits compatível com o SQL Server, atendeu a todos os pré-requisitos e ainda assim ao tentar executar uma consulta usando o OPENROWSET recebeu o erro abaixo.
Consulta:
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0' ,'Excel 12.0;Database=C:\Local do Arquivo\arquivo.xls;HDR=YES;IMEX=1' ,[Plan1$])
Mensagem:
OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Erro não especificado".
Msg 7303, Level 16, State 1, Line 1 Cannot initialize the data source object of OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server “(null)”.
Outra tentativa
Mesmo depois de tentar habilitar com o seguinte comando e verificando que está habilitado, você continuou recebendo o erro acima.
SP_CONFIGURE 'show advanced options', 1 RECONFIGURE SP_CONFIGURE 'Ad Hoc Distributed Queries', 1 RECONFIGURE SP_CONFIGURE
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
Solução
Seu problema pode ser relacionado ao nível de acesso do SQL Server em sua máquina.
Verifique as credenciais com que o SQL Server está fazendo logon no seus sistema, abrindo o SQL Server Configuration Manager.
O serviço tem de estar associado ao LocalSystem para poder acessar corretamente os drivers do ‘Microsoft.ACE.OLEDB.12.0’ (vale lembrar que este driver substitui o antigo ‘Microsoft.Jet.OLEDB.4.0’) conforme figura abaixo:
Após este ajuste as consultas serão executadas normalmente.
Apesar de resolver meu problema especificamente eu tentei compilar as outras soluções que encontrei nos fóruns de discussão da MSDN
Eu tive um problema parecido.
A solução no meu caso foi apenas reiniciar o serviço do SQL SERVER e voltou a funcionar normalmente.