Compartilhar via


OLE DB Provider for Jet

O Microsoft OLE DB Provider for Jet fornece uma interface OLE DB para bancos de dados do Microsoft Access e permite que consultas distribuídas do SQL Server 2005 e versões posteriores consultem bancos de dados do Access e planilhas do Excel.

Para baixar os drivers do Microsoft Office 2007, consulte 2007 Office System Driver: Data Connectivity Components.

DicaDica

Para conectar-se ao Microsoft Access, o SQL Server deve iniciar o Microsoft Access Mecanismo de Banco de Dados. Diferente da maioria dos outros provedores, o Microsoft Access não é um provedor leve, mas sim todo o Microsoft Access Mecanismo de Banco de Dados. Abrir o Microsoft Access no espaço de processo do SQL Server pode causar falhas devido à falta de recursos de disco, processador ou memória. Os erros incluem: "Não é possível inicializar o objeto de fonte de dados do provedor OLE DB". Para evitar erros de memória insuficiente, configure o provedor para abrir fora do espaço de processo de memória do SQL Server.

Para executar o Microsoft Access fora do espaço de memória do SQL Server

  1. No Gerenciador de Objetos do SQL Server Management Studio, expanda: o nome do SQL Server, Objetos de Servidor, Servidores Vinculados e Provedores, clique com o botão direito no provedor Microsoft.ACE.OLEDB.12.0 ou Microsoft.Jet.OLEDB.4.0 do Microsoft Access e clique em Propriedades.

  2. Na caixa Opções de Provedor, desmarque Permitir processo interno.

  3. Clique em OK.

Para criar um servidor vinculado para acessar um banco de dados do Access

  1. Execute sp_addlinkedserver para criar o servidor vinculado, especificando Microsoft.Jet.OLEDB.4.0 como provider_name e o nome do caminho completo do arquivo de banco de dados .mdb do Access como data_source. O arquivo de banco de dados .mdb deve residir no servidor. O data_source é avaliado no servidor, não no cliente, e o caminho deve ser válido no servidor.

    Por exemplo, para criar um servidor vinculado nomeado Nwind que opere no banco de dados do Access nomeado Nwind.mdb no c:\mydata directory, execute.

    sp_addlinkedserver 'Nwind', 'Access', 'Microsoft.Jet.OLEDB.4.0', 
       'c:\mydata\Nwind.mdb'
    
  2. Para acessar um banco de dados não protegido do Access, os logons do SQL Server que tentarem acessar um banco de dados do Access deverão ter um mapeamento de logon definido para o nome de usuário Admin sem senha.

    O exemplo a seguir habilita o acesso ao usuário local Joe ao servidor vinculado nomeado Nwind.

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'Admin', NULL
    

    Para acessar um banco de dados do Access protegido, configure o Registro usando o Editor do Registro para usar o arquivo de informações do grupo de trabalho usado pelo Access. Use o Editor do Registro para adicionar o nome completo do caminho do arquivo de informações do grupo de trabalho usado pelo Access para esta entrada do Registro:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SystemDB

  3. Depois que a entrada do Registro estiver configurada, use sp_addlinkedsrvlogin para criar mapeamentos de logons locais para logons do Access:

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe',
        'AccessUser', '034fhd99dl'
    
Observação sobre segurançaObservação sobre segurança

Este exemplo não usa a Autenticação do Windows. As senhas serão transmitidas descriptografadas. Senhas podem ser visíveis em definições de fonte de dados e scripts salvos em disco, em backups e em arquivos de log. Nunca use uma senha de administrador nesse tipo de conexão. Contate o administrador da rede para obter orientações sobre segurança específicas a seu ambiente.

Bancos de dados do Access não têm catálogo e nomes de esquema. Portanto tabelas em um servidor vinculado baseado no Access podem ser referidas em consultas distribuídas usando um nome de quatro partes do formulário linked_server**...**table_name.

O exemplo a seguir recupera todas as linhas da tabela Employees no servidor vinculado nomeado Nwind.

SELECT * 
FROM Nwind...Employees

Para criar um servidor vinculado em relação a uma planilha do Excel

O Microsoft OLE DB Provider for Jet 4.0 pode ser usado para acessar planilhas do Microsoft Excel.

  • Para criar um servidor vinculado que acessa uma planilha do Excel, use o formato do exemplo a seguir:

    EXEC sp_addlinkedserver EXCEL,
         'Jet 4.0',
         'Microsoft.Jet.OLEDB.4.0',
         'c:\data\MySheet.xls', 
          NULL,
         'Excel 5.0;'
    
    GO
    
  • Para acessar dados de uma planilha do Excel, associe um intervalo de células com um nome. Um intervalo nomeado pode ser acessado usando o nome do intervalo como o nome da tabela. A consulta a seguir pode ser usada para acessar um intervalo nomeado chamado SalesData usando a configuração do servidor vinculado no exemplo anterior.

    SELECT *
    FROM EXCEL...SalesData
    GO
    

Quando uma linha é inserida em um intervalo de células nomeado, a linha é adicionada após a última linha que faz parte do intervalo de células nomeado. Portanto, se desejar inserir a linha rA após o título da coluna, associe a célula do título da coluna a um nome e use esse nome como o nome da tabela. O intervalo de células crescerá automaticamente conforme linhas forem inseridas.

Para configurar um servidor vinculado em relação a um texto formatado

O Microsoft OLE DB Provider for Jet pode ser usado para acessar e consultar arquivos de texto.

  • Para criar um servidor vinculado para acessar arquivos de texto diretamente sem vincular os arquivos como tabelas em um arquivo .mdb do Access, execute sp_addlinkedserver, conforme mostrado no exemplo a seguir.

    O provedor é Microsoft.Jet.OLEDB.4.0 e a cadeia de caracteres do provedor é 'Text'. A fonte de dados é o nome completo do diretório que contém os arquivos de texto. Deve existir um arquivo Schema.ini no mesmo diretório que os arquivos de texto. Um arquivo Schema.ini descreve a estrutura do arquivo de texto. Para obter mais informações sobre como criar um arquivo Schema.ini, consulte a documentação do Mecanismo de Banco de Dados do Jet.

    --Create a linked server.
    EXEC sp_addlinkedserver txtsrv, 'Jet 4.0', 
       'Microsoft.Jet.OLEDB.4.0',
       'c:\data\distqry',
       NULL,
       'Text'
    GO
    
    --Set up login mappings.
    EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULL
    GO
    
    --List the tables in the linked server.
    EXEC sp_tables_ex txtsrv
    GO
    
    --Query one of the tables: file1#txt
    --by using a four-part name. 
    SELECT * 
    FROM txtsrv...[file1#txt]