none
acessar planilha excel RRS feed

  • Pergunta

  • Senhores, gostaria de acessar atraves do Management Studio uma planilha de excel. Até instalei o excel no servidor porem apresenta erro ao executar o comando:

    Select * from openrowset( 
    'Microsoft.Jet.OLEDB.4.0',
    'Excel 8.0;Database= C:\FaberCode\Importacao\ImportacaoPenDrive(Ze Luis)\CADASTRO_CNPJ_EMPRESAS.xls',
    'Select * from [CADASTRO_EMPR_PRIVADAS_TELEFONI]'
    )

    Andei pesquisando, mas não encontrei resultado, em Servidores vinculados não possui em Provider o Microsoft.Jet.OLEDB.4.0, como faço para habilitar ou instalar para que seja apresentado?

    abs a todos


    Marcelo Nogueira

    sexta-feira, 24 de janeiro de 2014 17:39

Respostas

  • Durval,

    Sinceramente o Provider ACE no SQL Server 2008, R2 ou 2012 não é o mais indicado por questões do compatibilidade e performance.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    Junior,

    Na verdade, o JET está obsoleto e não possui versão 64 bits, o que deprecia sua performance. Como indicado na orientação do MVP Olaf Helper, o Access Database Engine é o substituto deste driver. Veja o post:

    http://social.msdn.microsoft.com/Forums/pt-BR/05910244-ca39-49f8-bbd7-6844cd33e1bc/microsoft-access-driver-mdb-accdb-download-for-windows-7-need-to-make-odbc-connection-using-vb10?forum=sqldataaccess

    O download do pacote também é claro:

    http://www.microsoft.com/en-us/download/details.aspx?id=13255

    No Blog MSDN, esta citação também é reforçada:

    http://blogs.msdn.com/b/farukcelik/archive/2010/06/04/accessing-excel-files-on-a-x64-machine.aspx

    Não quero desmerecer sua afirmação, principalmente pela sua importância na Comunidade, mas gostaria de mostrar que orientei o Marcelinho com base no conteúdo de grandes profissionais.

    Por favor, considere minhas afirmações com o respaldo destes conteúdos.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 4 de fevereiro de 2014 17:50
    Moderador
  • Caro Leandro, talvez não tenha me expressado bem, ao entrar no Management Studio não me aparece o Provider Microsoft.Jet.OLEDB. Apesar de ter instalado o excel na maquina onde o mesmo funciona perfeitamente.


    Marcelo Nogueira

    Marcelinho,

    Para utilizar planilhas Excel, à partir do Office 97, você pode utilizar o ACE. 

    Faça o download do arquivo pelo link abaixo:
     http://www.microsoft.com/en-us/download/details.aspx?id=23734 

    Provavelmente você deverá configurar antes sua instância SQL para poder "ver" o driver. Segue abaixo:

    USE [master]
    GO
    
    --CONFIGURANDO À INSTÂNCIA SQL PARA ACEITAR OPÇÕES AVANÇADAS
    exec sp_configure 'show advanced options', 1
    RECONFIGURE
    exec sp_configure 'Ad Hoc Distributed Queries', 1
    RECONFIGURE
    
    --ADICIONANDO OS DRIVERS NA INSTÂNCIA
    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
    
    --CONSULTANDO UMA PLANILHA
    SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0' ,
    'Excel 8.0;Database=C:\Planilhas\Teste.xls;' ,
    'SELECT * FROM [Plan1$]' );

    É importante também verificar se o usuário do servidor SQL possui acesso ao diretório do Windows onde está sua planilha. 

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    segunda-feira, 27 de janeiro de 2014 11:06
    Moderador
  • Os drivers Microsoft.Jet.OLEDB não tem suporte nas versões 64 bits do windows, você está rodando isso em um servidor?

    Tente usar o driver abaixo:

    http://www.microsoft.com/pt-br/download/details.aspx?id=20065

    Se não funcionar, poste a versão do SO, SQL server e Office que você está usando incluindo se é 32 ou 64 bits dos três produtos.

    segunda-feira, 27 de janeiro de 2014 13:48

Todas as Respostas

  • Eu acredito que seja problema de permissão, o usuário usado para rodar a consulta pode não ter as permissões NTFS necessárias para ler o arquivo. 

    Se você estiver usando um usuário do computador veja se ele tem permissões no diretório da planilha, se tiver usando um usuário do SQL tente criar um diretório de teste e dar permissão full para todos os usuários.

    Obs: Esse comando com o Microsoft.Jet.OLEDB.4.0 e Excel 8.0 só funcionam com planilhas no formato Excel 97 - 2003, para formatos mais novos use Microsoft.ACE.OLEDB.12.0 e Excel 12.0.

    sexta-feira, 24 de janeiro de 2014 18:14
  • Caro Leandro, talvez não tenha me expressado bem, ao entrar no Management Studio não me aparece o Provider Microsoft.Jet.OLEDB. Apesar de ter instalado o excel na maquina onde o mesmo funciona perfeitamente.


    Marcelo Nogueira

    sábado, 25 de janeiro de 2014 21:35
  • Caro Leandro, talvez não tenha me expressado bem, ao entrar no Management Studio não me aparece o Provider Microsoft.Jet.OLEDB. Apesar de ter instalado o excel na maquina onde o mesmo funciona perfeitamente.


    Marcelo Nogueira

    Marcelinho,

    Para utilizar planilhas Excel, à partir do Office 97, você pode utilizar o ACE. 

    Faça o download do arquivo pelo link abaixo:
     http://www.microsoft.com/en-us/download/details.aspx?id=23734 

    Provavelmente você deverá configurar antes sua instância SQL para poder "ver" o driver. Segue abaixo:

    USE [master]
    GO
    
    --CONFIGURANDO À INSTÂNCIA SQL PARA ACEITAR OPÇÕES AVANÇADAS
    exec sp_configure 'show advanced options', 1
    RECONFIGURE
    exec sp_configure 'Ad Hoc Distributed Queries', 1
    RECONFIGURE
    
    --ADICIONANDO OS DRIVERS NA INSTÂNCIA
    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
    
    --CONSULTANDO UMA PLANILHA
    SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0' ,
    'Excel 8.0;Database=C:\Planilhas\Teste.xls;' ,
    'SELECT * FROM [Plan1$]' );

    É importante também verificar se o usuário do servidor SQL possui acesso ao diretório do Windows onde está sua planilha. 

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    segunda-feira, 27 de janeiro de 2014 11:06
    Moderador
  • Os drivers Microsoft.Jet.OLEDB não tem suporte nas versões 64 bits do windows, você está rodando isso em um servidor?

    Tente usar o driver abaixo:

    http://www.microsoft.com/pt-br/download/details.aspx?id=20065

    Se não funcionar, poste a versão do SO, SQL server e Office que você está usando incluindo se é 32 ou 64 bits dos três produtos.

    segunda-feira, 27 de janeiro de 2014 13:48
  • Durval,

    Sinceramente o Provider ACE no SQL Server 2008, R2 ou 2012 é o mais indicado por questões do compatibilidade e performance.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]


    terça-feira, 4 de fevereiro de 2014 15:37
  • Marcelo,

    Você configurou um Linked Server no SQL Server, para que seja possível realizar o acesso aos dados?

    Senão realizou, o script abaixo poderá ajudar:

    exec sp_addlinkedserver
    @server = N'OurLinkedServer',
    @srvproduct=N'Excel',
    @provider=N'Microsoft.Jet.OLEDB.4.0',
    @datasrc=N'\\Teste1\Share\DePara_Laboratorio.xls',
    @provstr=N'Excel 8.0;IMEX=1'
     
    EXEC sp_addlinkedsrvlogin 'OurLinkedServer', 'False','Pedro','Dominio\usuario','TEste609'
    
    exec sp_testlinkedserver OurLinkedServer
    -- Or select from it
    select top 1 * from OurLinkedServer...teste$


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    terça-feira, 4 de fevereiro de 2014 15:39
  • Durval,

    Sinceramente o Provider ACE no SQL Server 2008, R2 ou 2012 não é o mais indicado por questões do compatibilidade e performance.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    Junior,

    Na verdade, o JET está obsoleto e não possui versão 64 bits, o que deprecia sua performance. Como indicado na orientação do MVP Olaf Helper, o Access Database Engine é o substituto deste driver. Veja o post:

    http://social.msdn.microsoft.com/Forums/pt-BR/05910244-ca39-49f8-bbd7-6844cd33e1bc/microsoft-access-driver-mdb-accdb-download-for-windows-7-need-to-make-odbc-connection-using-vb10?forum=sqldataaccess

    O download do pacote também é claro:

    http://www.microsoft.com/en-us/download/details.aspx?id=13255

    No Blog MSDN, esta citação também é reforçada:

    http://blogs.msdn.com/b/farukcelik/archive/2010/06/04/accessing-excel-files-on-a-x64-machine.aspx

    Não quero desmerecer sua afirmação, principalmente pela sua importância na Comunidade, mas gostaria de mostrar que orientei o Marcelinho com base no conteúdo de grandes profissionais.

    Por favor, considere minhas afirmações com o respaldo destes conteúdos.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 4 de fevereiro de 2014 17:50
    Moderador
  • Durval,

    Sem problemas, você esta certo, talvez eu não tenha me atendendo na resposta, mas realmente o JET já esta ultrapassado.

    VAleu.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quinta-feira, 6 de fevereiro de 2014 17:38
  • Durval,

    Sinceramente o Provider ACE no SQL Server 2008, R2 ou 2012 não é o mais indicado por questões do compatibilidade e performance.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    Junior,

    Na verdade, o JET está obsoleto e não possui versão 64 bits, o que deprecia sua performance. Como indicado na orientação do MVP Olaf Helper, o Access Database Engine é o substituto deste driver. Veja o post:

    http://social.msdn.microsoft.com/Forums/pt-BR/05910244-ca39-49f8-bbd7-6844cd33e1bc/microsoft-access-driver-mdb-accdb-download-for-windows-7-need-to-make-odbc-connection-using-vb10?forum=sqldataaccess

    O download do pacote também é claro:

    http://www.microsoft.com/en-us/download/details.aspx?id=13255

    No Blog MSDN, esta citação também é reforçada:

    http://blogs.msdn.com/b/farukcelik/archive/2010/06/04/accessing-excel-files-on-a-x64-machine.aspx

    Não quero desmerecer sua afirmação, principalmente pela sua importância na Comunidade, mas gostaria de mostrar que orientei o Marcelinho com base no conteúdo de grandes profissionais.

    Por favor, considere minhas afirmações com o respaldo destes conteúdos.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    Durval,

    Sem problemas, eu me expressei mal no post, pensei uma coisa e escrevi outra.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quinta-feira, 6 de fevereiro de 2014 17:40