Compartilhar via


Verificação de instalação do driver OLE DB

O OLE DB (Banco de Dados de Incorporação e Vinculação de Objetos) é uma tecnologia de acesso a dados da Microsoft usada para conectar aplicativos a várias fontes de dados usando provedores OLE DB. A solução de problemas de instalações e validações do driver OLE DB pode ser complexa, mas é crucial para a interação perfeita do banco de dados. Este guia de solução de problemas tem como objetivo fornecer informações sobre a instalação, validação e resolução de problemas relacionados a drivers OLE DB.

Sobre arquivos UDL

Uma das maneiras mais simples de testar um provedor OLE DB é por meio do arquivo UDL (Universal Data Link). Crie qualquer arquivo de texto no Windows Explorer e renomeie-o para ter um domínio . UDL . Certifique-se de ter as extensões de arquivo ativadas para fazer a alteração. Para obter mais informações, consulte Testar a conectividade do OLE DB com o SQL Server usando um arquivo UDL

Clique duas vezes no arquivo para abrir uma caixa de diálogo onde você pode ver os provedores instalados e testar suas conexões.

A captura de tela mostra como usar o arquivo UDL para testar o provedor OLE DB.

Observação

Se você selecionar OK na caixa de diálogo, poderá abrir o arquivo UDL no Bloco de Notas para ver a cadeia de conexão que pode ser usada em seu aplicativo. Por exemplo:

Provider=SQLNCLI11.1;Integrated Security="";Persist Security Info=False;User ID=sa;Initial Catalog=northwind;Data Source=tcp:SQLProd01.contoso.com,1433;Initial File Name="";Server SPN=""

A interface do usuário do arquivo UDL é fornecida pelo OLEDB32.DLL e hospedada no RUNDLL32.DLL.

  • Para sistemas de 32 bits ou para provedores de 64 bits em sistemas de 64 bits, use o seguinte comando:

    Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\test.udl

  • Para provedores de 32 bits em sistemas de 64 bits, use o seguinte comando:

    C:\Windows\SysWOW64\Rundll32.exe C:\PROGRA~2\COMMON~1\System\OLEDB~1\oledb32.dll,OpenDSLFile C:\test.udl32

O . A extensão do arquivo UDL é mapeada para o primeiro comando. Para o segundo, você pode simplificar as coisas executando um prompt de comando de 32 bits e, em seguida, executando START C:\TEMP\TEST.UDL para testar provedores de 32 bits. Ainda mais simples é mapear o . UDL32 para o comando de 32 bits.

Mapeamento de extensão de arquivo .udl32 de 32 bits

Se você usa provedores de 32 bits com frequência, pode mapear a extensão de arquivo .udl32 para iniciar a caixa de diálogo UDL de 32 bits. Siga estas etapas:

  1. Copie o script para o Bloco de Notas e salve-o como udl32.reg.

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\.UDL32]
    @="ft000001"
    
    [HKEY_CLASSES_ROOT\ft000001]
    @="Microsoft Data Link 32"
    "BrowserFlags"=dword:00000008
    "EditFlags"=dword:00000000
    
    [HKEY_CLASSES_ROOT\ft000001\shell]
    @="open"
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open]
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open\command]
    @="C:\\Windows\\SysWOW64\\Rundll32.exe C:\\PROGRA~2\\COMMON~1\\System\\OLEDB~1\\oledb32.dll,OpenDSLFile %1"
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open\ddeexec]
    
  2. Clique duas vezes no arquivo .reg e crie um arquivo com uma extensão de arquivo .udl32 . Por exemplo, test.udl32. E ele iniciará a caixa de diálogo UDL de 32 bits. Por exemplo:

    A captura de tela mostra um exemplo de uma caixa de diálogo UDL de 32 bits.

Validar um provedor OLE DB

A primeira etapa para validar um provedor é ver se o nome aparece na lista de provedores instalados de uma caixa de diálogo UDL de 64 bits ou 32 bits, conforme mostrado acima. Caso contrário, você precisará reinstalar o provedor ou consultar o fornecedor.

Você também pode rastrear a localização do driver no registro. O nome do driver é um COM ProgID e você pode encontrá-lo em HKEY_CLASSES_ROOT.

Na imagem a seguir, você pode ver o mapeamento entre o ProgID SQLNCLI11.1 e o nome do provedor SQL Server Native Client 11.0.

A captura de tela mostra o mapeamento entre o ProgID SQLNCLI11.1 e o nome do provedor SQL Server Native Client 11.0.

O ProgID de provedores de 32 bits e 64 bits aparece sob essa chave.

Além do SQLNCLI11.1, há também um ProgID chamado SQLNCLI11. O motivo para isso é que um desenvolvedor de provedor pode permitir que várias versões do mesmo provedor sejam instaladas lado a lado, cada uma com um sufixo numérico diferente. O nome não numerado é o ProgID independente da versão. Os aplicativos podem apontar para isso e ser redirecionados para a versão mais recente do provedor.

Para todos os efeitos, esses dois nomes ProgID diferentes devem ser equivalentes. No entanto, houve alguns casos em que não foram. Os aplicativos que usam o nome independente de versão não podem se conectar, mas podem se conectar se estiverem usando o ProgID com versão. O motivo é que as duas entradas apontam para valores CLSID diferentes, que é como localizar a DLL do provedor.

A captura de tela mostra como localizar a dll do provedor usando o ProgId com versão.

O CLSID é o COM GUID. A infraestrutura COM localiza o GUID do ProgID. Em seguida, ele procura na HKEY_CLASSES_ROOT\CLSID chave uma chave cujo GUID corresponda ao nome da chave:

A captura de tela mostra como localizar um GUID do ProgId em HKEY_CLASSES_ROOT\CLSID.

O InProcServer32 valor aponta para a DLL do provedor.

Para provedores de 32 bits, o COM usa o mesmo GUID, mas o procura em HKEY_CLASSES_ROOT\Wow6432Node\CLSID.

A captura de tela mostra que o provedor está localizado na pasta SysWow64.

Nesse caso, o provedor está localizado na pasta SysWow64 .

Observação

Esses exemplos são de máquinas de 64 bits. Em computadores de 32 bits, não há no Wow6432Node registro.

Estes são os caminhos para o SQL Native Client 11.0 no Editor do Registro para computadores de 64 bits:

  • HKEY_CLASSES_ROOT\SQLNCLI.1\CLSID
  • HKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32
  • HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32

Estes são os caminhos no Editor do Registro para computadores de 32 bits:

  • HKEY_CLASSES_ROOT\SQLNCLI.1\CLSID
  • HKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32

Suporte para provedores terceirizados

O suporte para provedores OLE DB de terceiros é limitado à validação dos pontos ProgID para um CLSID válido e que a InProcServer32 subchave aponta para a DLL correta. Se o caminho estiver incorreto ou a entrada do Registro não existir, reinstale o provedor ou entre em contato com o fornecedor. Se os arquivos existirem, mas as entradas do Registro não, você poderá registrar manualmente o provedor usando REGSVR32o . Para registrar uma DLL COM, execute o seguinte comando em um prompt de comando com privilégios elevados:

Regsvr32 sqlncli11

A captura de tela mostra um comando de administrador para registrar uma DLL COM.

Se houver versões de 32 bits e 64 bits do provedor, execute o comando em ambas as DLLs. Use um prompt de comando de 32 bits para registrar a DLL de 32 bits.

Mais informações