Proveedor OLE DB para Jet

El proveedor OLE DB de Microsoft para Jet proporciona una interfaz OLE DB para bases de datos de Microsoft Access que permite realizar consultas distribuidas de SQL Server 2005 y posterior en bases de datos de Access y hojas de cálculo de Excel.

Para descargar los controladores de Microsoft Office 2007, vea el tema sobre componentes de conectividad de datos en controladores de 2010 Office System.

SugerenciaSugerencia

Para conectar con Microsoft Access, SQL Server debe iniciar el Motor de base de datos de Microsoft Access. A diferencia de la mayoría de otros proveedores, Microsoft Access no es un proveedor ligero sino el Motor de base de datosde Microsoft Access completo. El proceso de abrir Microsoft Access en el espacio de proceso de SQL Server puede producir errores debidos a falta de disco, procesador o recursos de memoria. Ente los errores se incluye el siguiente: "No se puede inicializar el objeto de origen de datos del proveedor OLE DB". Para evitar errores de memoria insuficiente, configure el proveedor para que se abra fuera del espacio de proceso de memoria de SQL Server.

Para ejecutar Microsoft Access fuera del espacio de memoria de SQL Server

  1. En el Explorador de objetos de SQL Server Management Studio, expanda el nombre de SQL Server, expanda Objetos de servidor, expanda Servidores vinculados, expanda Proveedores, haga clic con el botón secundario en el proveedor de Microsoft Access Microsoft.ACE.OLEDB.12.0 o Microsoft.Jet.OLEDB.4.0 y, a continuación, haga clic en Propiedades.

  2. En el cuadro Opciones del proveedor, desactive Permitir InProcess.

  3. Haga clic en Aceptar.

Para crear un servidor vinculado con el fin de tener acceso a una base de datos de Access

  1. Ejecute sp_addlinkedserver para crear el servidor vinculado, especificando Microsoft.Jet.OLEDB.4.0 como provider_name y el nombre de la ruta de acceso completa al archivo de base de datos .mdb de Access como data_source. El archivo .mdb de base de datos debe residir en el servidor. data_source se evalúa en el servidor, no en el cliente, y la ruta de acceso debe ser válida en el servidor.

    Por ejemplo, para crear un servidor vinculado denominado Nwind que funcione en la base de datos de Access Nwind.mdb en el c:\mydata directory, ejecute:

    sp_addlinkedserver 'Nwind', 'Access', 'Microsoft.Jet.OLEDB.4.0', 
       'c:\mydata\Nwind.mdb'
    
  2. Para tener acceso a una base de datos de Access no segura, los inicios de sesión de SQL Server que intenten tener acceso a la base de datos de Access deben tener definida una asignación de inicio de sesión para el nombre de usuario Admin sin ninguna contraseña.

    En el ejemplo siguiente se habilita el acceso para el usuario local Joe al servidor vinculado denominado Nwind.

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'Admin', NULL
    

    Para tener acceso a una base de datos de Access segura, utilice el Editor del Registro para configurar el Registro de manera que utilice el archivo de información de grupo de trabajo correcto que Access utiliza. Utilice el Editor del Registro para agregar a la entrada siguiente del Registro el nombre completo de la ruta de acceso al archivo de información del grupo de trabajo que Access utiliza:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SystemDB

  3. Una vez configurada la entrada del Registro, use sp_addlinkedsrvlogin para asignar los inicios de sesión locales a inicios de sesión de Access:

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe',
        'AccessUser', '034fhd99dl'
    
Nota de seguridadNota de seguridad

En este ejemplo no se utiliza la autenticación de Windows. Las contraseñas se transmiten sin cifrar. Las contraseñas se pueden ver en scripts y definiciones de origen de datos guardadas en disco, en copias de seguridad y en archivos de registro. No utilice nunca una contraseña de administrador en este tipo de conexión. Póngase en contacto con su administrador de red y pídale directrices de seguridad específicas para este entorno.

Las bases de datos de Access no tienen nombres de esquema ni de catálogo. Por tanto, en las consultas distribuidas se puede hacer referencia a las tablas de un servidor vinculado basado en Access utilizando un nombre de cuatro partes con el formato linked_server**...**table_name.

En el ejemplo siguiente se recuperan todas las filas de la tabla Employees del servidor vinculado denominado Nwind.

SELECT * 
FROM Nwind...Employees

Para crear un servidor vinculado con una hoja de cálculo de Excel

Se puede utilizar el proveedor OLE DB de Microsoft para Jet 4.0 con el fin de obtener acceso a hojas de cálculo de Microsoft Excel.

  • Para crear un servidor vinculado que obtenga acceso a una hoja de cálculo de Excel, utilice el formato del ejemplo siguiente:

    EXEC sp_addlinkedserver EXCEL,
         'Jet 4.0',
         'Microsoft.Jet.OLEDB.4.0',
         'c:\data\MySheet.xls', 
          NULL,
         'Excel 5.0;'
    
    GO
    
  • Para obtener acceso a los datos de una hoja de cálculo de Excel, asocie un nombre a un rango de celdas. Para obtener acceso a un rango con nombre, se utiliza el nombre del rango como nombre de tabla. La consulta siguiente se puede emplear para obtener acceso a un rango con nombre denominado SalesData utilizando el servidor vinculado creado en el ejemplo anterior.

    SELECT *
    FROM EXCEL...SalesData
    GO
    

Cuando se inserta una fila en un rango de celdas con nombre, ésta se agrega después de la última fila que forma parte del rango de celdas con nombre. Por tanto, si se desea insertar la fila rA después del encabezado de columna, es necesario asociar un nombre a las celdas de encabezado de columna y utilizar ese nombre como nombre de tabla. El rango de celdas crece automáticamente a medida que se insertan filas.

Para configurar un servidor vinculado con un archivo de texto con formato

Se puede utilizar el proveedor OLE DB de Microsoft para Jet con el fin de obtener acceso a archivos de texto y realizar consultas en ellos.

  • Si desea crear un servidor vinculado para obtener acceso a los archivos de texto directamente, sin tener que vincularlos como tablas en un archivo .mdb de Access, ejecute sp_addlinkedserver, como se muestra en el ejemplo siguiente.

    El proveedor es Microsoft.Jet.OLEDB.4.0 y la cadena del proveedor es 'Text'. El origen de datos es el nombre completo de la ruta de acceso al directorio que contiene los archivos de texto. Debe haber un archivo Schema.ini en el mismo directorio que los archivos de texto. El archivo Schema.ini describe la estructura del archivo de texto. Para obtener más información sobre cómo crear un archivo Schema.ini, vea la documentación del motor de base de datos Jet.

    --Create a linked server.
    EXEC sp_addlinkedserver txtsrv, 'Jet 4.0', 
       'Microsoft.Jet.OLEDB.4.0',
       'c:\data\distqry',
       NULL,
       'Text'
    GO
    
    --Set up login mappings.
    EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULL
    GO
    
    --List the tables in the linked server.
    EXEC sp_tables_ex txtsrv
    GO
    
    --Query one of the tables: file1#txt
    --by using a four-part name. 
    SELECT * 
    FROM txtsrv...[file1#txt]