segunda-feira, 18 de janeiro de 2016

SQL Server 2014 - Instalando e configurando o driver ACE OLEDB12 para ler XLS via Linked Server


Instalando e Configurando o driver ACE OLEDB12 PARA ler arquivo XLS no SQL SERVER 2014


Caso esteja ocorrendo o erro abaixo ao tentar criar um linked server para leitura de arquivo do Excel (.xls), execute as etapas de Instalação e Configuração.
Msg 7403, Level 16, State 1, Line 1 The OLE DB provider "Microsoft.ACE.OLEDB.12.0" has not been registered.

Caso esteja ocorrendo os erros abaixo, execute somente a etapa de Configuração(uma vez que você já tem o ACE OLEDB12 instalado)

Msg 7399, Level 16, State 1, Line 2
The OLE DB provider "Microsoft.ACE.OLEDB.12.0″ for linked server "(null)" reported an error. Access denied.
Msg 7301, Level 16, State 2, Line 2
Cannot obtain the required interface ("IID_IDBCreateCommand") from OLE DB provider "Microsoft.ACE.OLEDB.12.0″ for linked server "(null)".


Msg 7302, Level 16, State 1, Line 2
Cannot create an instance of OLE DB provider "MSDASC" for linked server "(null)".
OLE DB provider "Microsoft.ACE.OLEDB.12.0″ for linked server "(null)" returned message "Unspecified error".

Msg 7303, Level 16, State 1, Line 2
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0″ for linked server "(null)".


INSTALANDO O ACCESS DATABASE ENGINE X64


Siga os passos abaixo :
1)    Baixar a versão 64 bits do Acess Database Engine (AccessDatabaseEngine_X64.exe) do "Microsoft Access Database Engine 2010 Redistributable" no link abaixo :


2) Instalar o AccessDatabaseEngine_X64.exe no seu Servidor SQL

3)    Abra uma Nova Janela (new query window) no  SQL Server Management Studio (SSMS) e execute os comandos abaixo : 

USE [master]
GO 
sp_configure 'show advanced options', 1
GO
RECONFIGURE WITH OverRide
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE WITH OverRide
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO

*VERIFIQUE SE PARA O SEU CASO A OPÇÃO "ALLOW IN PROCESS" DEVE ESTAR ATIVADA OU INATIVADA. SE DER ERRO NA ETAPA 4, EXECUTE O COMANDO ACIMA COM ALLOWINPROCESS COM 0 NO LUGAR DE 1. IRÁ FUNCIONAR.


4)    Agora tente executar a query abaixo, que simula o linked server:

 select *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\planilha.xls',
               [plan1$])

Caso ocorra erro, execute a configuração abaixo.





 
CONFIGURANDO A CONTA DO SQL SERVER NO MSDAINITIALIZE PARA PERMITIR CONEXÃO LOCAL
 
Fontes:


  • Acessar o menu Iniciar\Executar e digitar: DCOMCNFG   e pressionar ENTER 
  • Clicar em Computers\My Computer\DCOM Config
  • Clicar na opção MSDAINITIALIZE com botão direito e clicar em Properties;
  • Clicar na aba Security;
  • No quadro Access Permissions, marcar Customize e clicar em Edit;
  • Clicar em Add e adicionar o usuário da Instância do SQL Server (Ex. SQLServerUser.Prod)
  • Marcar a opção Local Access (Allow);
  • Clicar em OK, OK e APPLY.

Pronto. Agora irá funcionar. Resolvido.
 


Nenhum comentário: