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.
Resumen
En este artículo se muestra cómo comprobar qué controlador o SQL Server proveedor de base de datos de vinculación e inserción de objetos (OLE DB) está instalado en un equipo de Windows, cómo validar que funciona y cómo realizar un seguimiento de su registro en el registro de Windows. Use estas comprobaciones cuando una aplicación no pueda conectarse a SQL Server y sospecha que falta el controlador OLE DB o no está registrado.
Validación del proveedor o controlador OLE DB a través de PowerShell
Para buscar qué versiones del controlador OLE DB para SQL Server están instaladas 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
El InstalledVersion valor muestra la compilación exacta de cada controlador instalado. Microsoft OLE DB Driver 19 para SQL Server (MSOLEDBSQL19) se instala en paralelo con Microsoft OLE DB Driver 18 para SQL Server (MSOLEDBSQL), por lo que se espera ver ambas claves. Para confirmar si está ejecutando la versión más reciente, compare el valor con la compilación actual de disponibilidad general (GA) que aparece en Descargar Microsoft OLE DB Driver for SQL Server.
Comprobación de una instalación de SQL Server Native Client (SQLNCLI)
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}
Nota:
SQL Server Native Client (SNAC SQLNCLI o SQLNCLI11) y el proveedor OLE DB heredado de Microsoft para SQL Server (SQLOLEDB) no se incluyen con SQL Server 2022 (16.x) ni con SQL Server Management Studio 19 ni versiones posteriores. No se recomiendan para el nuevo desarrollo de aplicaciones. Use el Microsoft OLE DB Driver for SQL Server en su lugar. En este artículo se sigue usando SQLNCLI en los ejemplos, ya que sigue siendo habitual en los sistemas existentes que debe diagnosticar.
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 usar un archivo Universal Data Link (UDL). Un archivo UDL abre el cuadro de diálogo Propiedades de vínculo de datos , que enumera los proveedores OLE DB registrados en el equipo y le permite probar una conexión sin una aplicación completa.
Para crear y abrir un archivo UDL, siga estos pasos:
- Asegúrese de que tiene las extensiones de archivo activadas en el Explorador de archivos para que pueda cambiar la extensión.
- Cree cualquier archivo de texto en el Explorador de archivos y cámbielo para que tenga la extensión de archivo .udl . Seleccione Sí cuando Windows le avise sobre cómo cambiar la extensión de nombre de archivo.
- Haga doble clic en el archivo para abrir el cuadro de diálogo Propiedades del vínculo de datos , donde puede ver los proveedores instalados y probar sus conexiones.
- Seleccione Aceptar en el cuadro de diálogo para confirmar la configuración.
Sugerencia
Si hace doble clic en el archivo no abre el cuadro de diálogo Propiedades del vínculo de datos (por ejemplo, el archivo se abre en un editor de texto o devuelve un error), pruebe cualquiera de las siguientes alternativas:
Haga clic con el botón derecho en el archivo .udl y seleccione Propiedades. En la mayoría de los sistemas, esta acción también abre el cuadro de diálogo Propiedades de vínculo de datos .
Abra el cuadro de diálogo directamente ejecutando el siguiente comando, donde C:\temp\test.udl es la ruta de acceso al archivo:
Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\temp\test.udl
Para abrir el cuadro de diálogo de 32 bits en un sistema operativo de 64 bits, consulte Iniciar un archivo UDL.
Para obtener instrucciones paso a paso sobre cómo probar una conexión a través de cada proveedor, consulte Probar la conectividad OLE DB con SQL Server mediante un archivo UDL.
Examen del contenido del archivo UDL para obtener un cadena de conexión
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=""
Seguimiento de un proveedor OLE DB en el registro de Windows
Para validar un controlador, compruebe primero si el nombre aparece en la lista de proveedores instalados en un cuadro de diálogo UDL de 64 o 32 bits, como se muestra en la sección anterior. Si no es así, vuelva a instalar el proveedor o póngase en contacto con el proveedor.
Si el proveedor aparece en la lista, pero las conexiones siguen fallando, realice un seguimiento de la ubicación del controlador en el Registro. El nombre del controlador es un ProgID COM. Puede encontrarlo en HKEY_CLASSES_ROOT.
Asignar un ProgID a un nombre de proveedor
Con el controlador de SQL Server Native Client como ejemplo, en la imagen siguiente se 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.
A todos los efectos, estos dos nombres de ProgID diferentes deberían 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.
Busque el archivo DLL del proveedor desde el CLSID.
CLSID es el GUID COM. La infraestructura COM localiza el GUID a partir del ProgID. A continuación, busca bajo la clave HKEY_CLASSES_ROOT\CLSID una clave cuyo GUID coincide con el nombre de la 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 existe Wow6432Node en el registro.
Rutas de registro que se deben comprobar para SQL Server Native Client 11.0
Estas claves del Registro son las rutas de acceso a SQL Server Native Client 11.0 en el Editor del Registro para máquinas de 64 bits:
HKEY_CLASSES_ROOT\SQLNCLI11.1\CLSIDHKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32HKEY_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\SQLNCLI11.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Compatibilidad con proveedores OLE DB que no son de Microsoft
La compatibilidad técnica con proveedores OLE DB que no son de Microsoft se limita a validar que 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.
Registro manual de un archivo DLL de proveedor mediante regsvr32
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 bits y de 64 bits del proveedor, ejecute el comando contra ambas DLL. Utilice un símbolo del sistema de 32 bits para registrar la DLL de 32 bits.