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.

Acerca de los archivos UDL

Una de las formas más sencillas de probar un proveedor OLE DB es a través del archivo Universal Data Link (UDL). Cree cualquier archivo de texto en el Explorador de Windows y cámbielo para que tenga un . Extensión de archivo UDL . Asegúrese de que tiene activadas las extensiones de archivo para realizar el cambio. Para obtener más información, consulte Probar la conectividad OLE DB con SQL Server mediante un archivo UDL.

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.

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

Nota:

Si selecciona Aceptar en el cuadro de diálogo, puede abrir el archivo UDL en el Bloc de notas para ver la cadena de conexión puede usar en la aplicación. Por ejemplo:

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

La interfaz de usuario del archivo UDL la proporciona OLEDB32.DLL y se hospeda en RUNDLL32.DLL.

  • Para sistemas de 32 bits o para proveedores de 64 bits en sistemas de 64 bits, use el siguiente comando:

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

  • Para los proveedores de 32 bits en sistemas de 64 bits, use el siguiente comando:

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

. La extensión de archivo UDL se asigna al primer comando. Para el segundo, puede simplificar las cosas ejecutando un símbolo del sistema de 32 bits y, después, ejecutándose START C:\TEMP\TEST.UDL para probar proveedores de 32 bits. Incluso más sencillo es asignar . Extensión de archivo UDL32 al comando de 32 bits.

Asignación de extensiones de archivo .udl32 de 32 bits

Si usa proveedores de 32 bits con frecuencia, puede asignar la extensión de archivo .udl32 para iniciar el cuadro de diálogo UDL de 32 bits. Siga estos pasos:

  1. Copie el script en el Bloc de notas y guárdelo 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. Haga doble clic en el archivo .reg y, a continuación, puede crear un archivo con una extensión de archivo .udl32 . Por ejemplo, test.udl32. Y iniciará el cuadro de diálogo UDL de 32 bits. Por ejemplo:

    Captura de pantalla que muestra un ejemplo de un cuadro de diálogo UDL de 32 bits.

Validación de un proveedor OLE DB

El primer paso para validar un proveedor 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 anteriormente. 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.

En la imagen siguiente, puede ver 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 proveedores de 32 y 64 bits aparece bajo esta 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, ha habido algunos casos en los que no eran. Las aplicaciones que usan el nombre independiente de la versión no se pueden conectar, pero pueden conectarse si usan el ProgID con versiones. 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 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 de terceros

La compatibilidad con proveedores OLE DB de terceros se limita a validar el ProgID apunta a un CLSID válido y que la InProcServer32 subclave apunta al archivo DLL correcto. 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