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.

Validar o driver ou provedor OLE DB por meio do PowerShell

Para validar se o driver OLE DB mais recente para SQL Server está instalado no sistema operacional, execute o seguinte cmdlet do PowerShell como administrador.

Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
    Where-Object { $_.Name -like "*MSOLEDBSQL*" } |
    ForEach-Object { Get-ItemProperty $_.PSPath }

Se você tiver as versões 18 e 19 instaladas no sistema operacional, a saída poderá ser semelhante a esta.

InstalledVersion : 18.7.4.0
PSPath           : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSOLEDBSQL
PSParentPath     : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName      : MSOLEDBSQL
PSProvider       : Microsoft.PowerShell.Core\Registry

InstalledVersion : 19.4.1.0
PSPath           : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSOLEDBSQL19
PSParentPath     : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName      : MSOLEDBSQL19
PSProvider       : Microsoft.PowerShell.Core\Registry

InstalledVersion : 18.7.4.0
PSPath           : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSOLEDBSQL
PSParentPath     : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft
PSChildName      : MSOLEDBSQL
PSProvider       : Microsoft.PowerShell.Core\Registry

InstalledVersion : 19.4.1.0
PSPath           : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSOLEDBSQL19
PSParentPath     : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft
PSChildName      : MSOLEDBSQL19
PSProvider       : Microsoft.PowerShell.Core\Registry

Para verificar se há uma instalação do SQLNCLI (interface do provedor OLE DB), execute o seguinte cmdlet do PowerShell como administrador.

Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
   Where-Object { $_.Name -like "*SQLNCLi*" } |
   ForEach-Object {   Get-ItemProperty $_.PSPath}

Validar o driver OLE DB por meio de um arquivo UDL

Uma das maneiras mais fáceis de testar um driver OLE DB é usando um arquivo UDL (Universal Data Link). Crie qualquer arquivo de texto no Windows Explorer e renomeie-o para ter a extensão de arquivo .udl . Verifique se você tem extensões de arquivo ativadas para fazer a alteração. Clique duas vezes no arquivo para abrir uma caixa de diálogo onde você pode ver os provedores instalados e testar suas conexões. Para obter mais informações, consulte Testar a conectividade do OLE DB com o SQL Server usando um arquivo UDL.

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

Selecione OK na caixa de diálogo para confirmar a configuração.

Examinar o conteúdo do arquivo UDL

Se você abrir o arquivo UDL em um editor de texto, poderá copiar a cadeia de conexão a ser usada em seu aplicativo. Veja dois exemplos:

Provider=MSOLEDBSQL.1;Integrated Security=SSPI;Persist Security Info=False;User ID="";Initial Catalog=master;Data Source=localhost;Initial File Name="";Server SPN="";Authentication="";Access Token=""
Provider=SQLNCLI11.1;Integrated Security="";Persist Security Info=False;User ID=sa;Initial Catalog=AdventureWorks;Data Source=tcp:SQLProd01.contoso.com,1433;Initial File Name="";Server SPN=""

Validar um driver OLE DB

A primeira etapa para validar um driver é 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 na seção anterior. 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.

Usando o driver do SQL Server Native Client como exemplo, você pode ver na imagem a seguir, 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 a mesma 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, pode haver casos em que eles não estejam. Nesses casos, os aplicativos que usam o nome independente de versão não podem se conectar, mas podem se conectar se estiverem usando o ProgID versionado. 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.

Essas chaves do Registro 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 que não são da Microsoft

O suporte técnico para provedores OLE DB não Microsoft é limitado à validação de que o ProgID aponte para um CLSID válido e que a subchave do registro InProcServer32 aponte 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