Compartir a través de


Comprobación de instalación del controlador OLE DB

Object Linking and Embedding Database (OLE DB) es una tecnología de acceso a datos de Microsoft que se usa para conectar aplicaciones a varios orígenes de datos mediante proveedores OLE DB. La solución de problemas de instalaciones y validaciones del controlador OLE DB puede ser compleja, pero es fundamental para la interacción sin problemas con la base de datos. Esta guía de solución de problemas tiene como objetivo proporcionar información sobre la instalación, validación y resolución de problemas relacionados con los controladores OLE DB.

Validación del proveedor o controlador OLE DB a través de PowerShell

Para validar si el controlador OLE DB más reciente para SQL Server está instalado en el sistema operativo, ejecute el siguiente cmdlet de PowerShell como administrador.

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

Si tiene instalada la versión 18 y 19 en el sistema operativo, la salida podría tener un aspecto similar al siguiente.

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 comprobar si hay una instalación de la interfaz del proveedor OLE DB (SQLNCLI), ejecute el siguiente cmdlet de PowerShell como administrador.

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

Validación del controlador OLE DB a través de un archivo UDL

Una de las formas más fáciles de probar un controlador OLE DB es mediante un archivo Universal Data Link (UDL). Cree cualquier archivo de texto en el Explorador de Windows y cámbielo para que tenga la extensión de archivo .udl . Asegúrese de que tiene activadas las extensiones de archivo para realizar el cambio. Haga doble clic en el archivo para abrir un cuadro de diálogo en el que puede ver los proveedores instalados y probar sus conexiones. Para obtener más información, consulte Probar la conectividad OLE DB con SQL Server mediante un archivo UDL.

Captura de pantalla que muestra cómo usar el archivo UDL para probar el proveedor OLE DB.

Seleccione Aceptar en el cuadro de diálogo para confirmar la configuración.

Examen del contenido del archivo UDL

Si abre el archivo UDL en un editor de texto, puede copiar la cadena de conexión que se usará en la aplicación. Estos son dos ejemplos:

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=""

Validación de un controlador OLE DB

El primer paso para validar un controlador es ver si el nombre aparece en la lista de proveedores instalados de un cuadro de diálogo UDL de 64 o 32 bits, como se muestra en la sección anterior. Si no es así, debe volver a instalar el proveedor o consultar al proveedor.

También puede realizar un seguimiento de la ubicación del controlador en el Registro. El nombre del controlador es un ProgID COM y puede encontrarlo en HKEY_CLASSES_ROOT.

Con el controlador de SQL Server Native Client como ejemplo, puede ver en la imagen siguiente, la asignación entre progID SQLNCLI11.1 y el nombre de proveedor SQL Server Native Client 11.0.

Captura de pantalla que muestra la asignación entre progID SQLNCLI11.1 y el nombre del proveedor SQL Server Native Client 11.0.

El ProgID de los proveedores de 32 y 64 bits aparece bajo la misma clave.

Además de SQLNCLI11.1, también hay un ProgID denominado SQLNCLI11. El motivo de esto es que un desarrollador de proveedores podría permitir que varias versiones del mismo proveedor se instalen en paralelo, cada una con un sufijo numérico diferente. El nombre sin numerar es el ProgID independiente de la versión. Las aplicaciones pueden apuntar a esto y redirigirse a la versión más reciente del proveedor.

Para todas las intenciones y propósitos, estos dos nombres de ProgID diferentes deben ser equivalentes. Sin embargo, puede haber casos en los que no lo sean. En esos casos, las aplicaciones que usan el nombre independiente de la versión no se pueden conectar, pero pueden conectarse si usan el ProgID versionado. El motivo es que las dos entradas apuntan a valores CLSID diferentes, que es cómo buscar el archivo DLL del proveedor.

Captura de pantalla que muestra cómo buscar el archivo DLL del proveedor mediante el progId con versiones.

CLSID es el GUID COM. La infraestructura COM localiza el GUID desde progID. A continuación, busca en la HKEY_CLASSES_ROOT\CLSID clave una clave cuyo GUID coincide con el nombre de clave:

Captura de pantalla que muestra cómo buscar un GUID desde ProgId en HKEY_CLASSES_ROOT\CLSID.

El InProcServer32 valor apunta al archivo DLL del proveedor.

Para los proveedores de 32 bits, COM usa el mismo GUID, pero lo busca en HKEY_CLASSES_ROOT\Wow6432Node\CLSID.

Captura de pantalla que muestra que el proveedor se encuentra en la carpeta SysWow64.

En este caso, el proveedor se encuentra en la carpeta SysWow64 .

Nota:

Estos ejemplos son de máquinas de 64 bits. En las máquinas de 32 bits, no hay en Wow6432Node el Registro.

Estas claves del Registro son las rutas de acceso a SQL Native Client 11.0 en el Editor del Registro para máquinas de 64 bits:

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

Estas son las rutas de acceso del Editor del Registro para máquinas de 32 bits:

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

Compatibilidad con proveedores que no son de Microsoft

La compatibilidad técnica con proveedores que no son de Microsoft OLE DB se limita a validar que el ProgID apunta a un CLSID válido y que la subclave InProcServer32 apunta a la DLL correcta. Si la ruta de acceso es incorrecta o la entrada del Registro no existe, vuelva a instalar el proveedor o póngase en contacto con el proveedor. Si los archivos existen pero no las entradas del Registro, puede registrar manualmente el proveedor mediante REGSVR32. Para registrar un archivo DLL COM, ejecute el siguiente comando en un símbolo del sistema con privilegios elevados:

Regsvr32 sqlncli11

Captura de pantalla que muestra un comando de administrador para registrar un archivo DLL COM.

Si hay versiones de 32 y 64 bits del proveedor, ejecute el comando en ambos archivos DLL. Use un símbolo del sistema de 32 bits para registrar el archivo DLL de 32 bits.

Más información