Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
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:
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]
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:
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.
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.
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:
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
.
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
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.