¿Recuerda los días de su niñez cuando disfrutaba de una sopa de palabras en casa? Si este recuerdo le hace feliz, entonces disfrutará de la versión en forma de base de datos de la sopa de letras. En las secciones siguientes se describen los conceptos básicos para obtener acceso a una base de datos con cadenas de conexión y usar una interfaz de programación de bases de datos con código de VBA de Access.
En este artículo:
Usar el controlador ODBC o el proveedor OLE DB
Utilizar Access como interfaz de programación para SQL Server
Resumen de las versiones de controladores ODBC
Resumen de las versiones del proveedor de OLE DB
Usar el controlador ODBC o el proveedor OLE DB
Las cadenas de conexión llevan mucho tiempo con nosotros. Puede definir una cadena de conexión con formato tanto en la interfaz de usuario de Access como en código VBA. Una cadena de conexión (tanto ODBC como OLE DB) pasa información directamente a la base de datos, como la ubicación del servidor, el nombre de la base de datos, el tipo de seguridad y otras opciones útiles. Por ejemplo:
ODBC;DRIVER=SQL Server;SERVER="MyServer";DATABASE="MyHRdb";TRUSTED_CONNECTION=Yes
Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyHRdb; Integrated Security=SSPI;
Al principio existía una biblioteca independiente, SQL Server Native Client (SNAC), que incluía las tecnologías ODBC y OLEDB, y que todavía está disponible para las versiones 2005 a 2012 de SQL Server. Muchas aplicaciones heredadas usan SNAC y todavía se ofrece compatibilidad con versiones anteriores, pero no recomendamos que lo use para el desarrollo de aplicaciones nuevas. Debe usar versiones de los controladores ODBC que se puedan descargar más adelante.
Controladores ODBC
La conectividad abierta de bases de datos (ODBC) es un protocolo que puede usar para conectar una base de datos de Access con un origen de datos externos, como Microsoft SQL Server. Normalmente, se usan los orígenes de datos de archivo (también denominados archivos DSN) para agregar una cadena de conexión, en cuyo caso la palabra clave FILEDSN se usa en la cadena de conexión o se almacena en el registro, en cuyo caso se usa la palabra clave DSN. Como alternativa, puede usar VBA para establecer estas propiedades con una cadena de conexión sin DSN.
A lo largo de los años, los controladores ODBC se han entregado en tres fases:
-
Antes de 2005, los controladores ODBC se entregaban con Windows Data Access Components (WDAC), entonces llamado Microsoft Data Access Components (MDAC). Estos componentes aún se entregan con Windows por motivos de compatibilidad con versiones anteriores. Para obtener más información, Windows Data Access Components (o Microsoft Data Access Components).
-
Controladores ODBC incluidos en SNAC para SQL Server 2005 a través de SQL Server 2012.
-
Después de SQL Server 2012, los controladores ODBC se distribuyen de forma individual y contienen soporte técnico para las nuevas características de SQL Server.
Si desarrolla nuevo software, evite usar controladores ODBC de las dos primeras fases y use controladores ODBC en la tercera fase.
Proveedores OLE DB
Object Linking and Embedding Database (ODBC) es un protocolo más reciente que puede usar para conectar una base de datos de Access con un origen de datos externos, como Microsoft SQL Server. OLE DB no necesita un DSN y también ofrece acceso total a los controladores ODBC y a los orígenes de datos ODBC.
Sugerencia Por lo general, el cuadro de diálogo Propiedades de vínculo de datos se usa para agregar una cadena de conexión OLE DB. Aunque no se puede abrir el cuadro de diálogo Propiedades de vínculo de datos desde Access, en el explorador de Windows sí puede crear un archivo .txt vacío, cambiar su extensión a .udl y, a continuación, hacer doble clic en el archivo. Después de crear una cadena de conexión, cambie el tipo de archivo de nuevo a .txt.
A lo largo de los años, los controladores OLE DB se han entregado en tres fases:
-
Antes de 2005, los controladores OLE DB se entregaban con Windows Data Access Components (WDAC), entonces llamado Microsoft Data Access Components (MDAC).
-
Los controladores OLE DB entregados con las versiones de SQL Server de 2005 a 2017. Quedó obsoleto en 2011.
-
En 2017, el proveedor de OLE DB de SQL Server dejó de estar obsoleto y comenzó a usarse de nuevo.
La versión recomendada actualmente para desarrollar soluciones nuevas es el controlador OLE DB 18 para SQL Server.
Cómo optimizar el rendimiento con una cadena de conexión ODBC
Para optimizar el rendimiento, minimizar el tráfico de red y reducir el acceso de varios usuarios a la base de datos de SQL Server, utilice el menor número posible de cadenas de conexión. Para ello, comparta las cadenas de conexión entre varios conjuntos de registros. Aunque Access solo pasa una cadena de conexión al servidor, entiende y usa las siguientes palabras clave: DSN, DATABASE, UID, PWD y DRIVER para ayudar a minimizar la comunicación entre cliente y servidor.
Nota Si se pierde la conexión ODBC a un origen de datos externo, Access intentará volver a conectarse automáticamente. Si la reconexión se realiza correctamente, puede seguir trabajando. Si se produce un error en la reconexión, todavía podrá trabajar con objetos que no se basen en la conexión. Para volver a conectarse, cierre y vuelva a abrir Access.
Recomendaciones al usar ODBC y OLE DB
Evite combinar las tecnologías de cadena de conexión y acceso a bases de datos. Use una cadena de conexión ODBC para DAO. Use una cadena de conexión OLE DB para ADO. Si su aplicación contiene código en VBA que use DAO y ADO, utilice el controlador ODBC para DAO y el proveedor OLE DB para ADO. Intente utilizar la característica y la compatibilidad más reciente para ODBC y OLEDB.
ODBC usa el controlador de términos y OLE DB usa el proveedor de términos. Los términos describen el mismo tipo de componente de software, pero no son intercambiables en la sintaxis de cadena de conexión. En la documentación para ver cómo emplear el valor correcto para cada una.
Utilizar Access como interfaz de programación para SQL Server
Hay dos formas de utilizar Access como interfaz de programación para SQL Server.
DAO
Un objeto de acceso de datos (DAO) proporciona una interfaz abstracta para una base de datos. El DAO de Microsoft es el modelo de objetos de programación nativa que le permite acceder al corazón de Access y SQL Server para crear, eliminar, modificar y enumerar objetos, tablas, campos, índices, relaciones, consultas, propiedades y bases de datos externas.
Para obtener más información, Referencia de los objetos de acceso de datos de Microsoft.
ADO
Los objetos de datos de ActiveX (ADO) posibilitan un modelo de programación de alto nivel y están disponibles en Access mediante una referencia a una biblioteca de terceros. ADO es una forma sencilla de aprender y permite a las aplicaciones cliente manipular y acceder a datos desde una amplia variedad de orígenes, incluidos Access y SQL Server. Los principales beneficios son la facilidad de uso, la rapidez, la escasa sobrecarga de memoria y el reducido espacio en disco. ADO también es compatible con características clave para crear aplicaciones basadas en Web.
Para obtener más información, vea la referencia de objetos de datos ActiveX de Microsoft y objetos de datos ActiveX (ADO) de Microsoft.
¿Cuál de ellos debería usar?
En una solución de Access que use código de VBA, puede usar DAO, ADO o ambas como tecnología de interfaz de bases de datos. El acceso a DAO continúa siendo el predeterminado en Access. Por ejemplo, todos los formularios, informes y consultas de Access usan DAO. Sin embargo, al migrar a SQL Server considere la posibilidad de usar ADO para que la solución sea más eficaz. Estas son algunas instrucciones generales que le ayudarán a decidir cuándo usar DAO o ADO.
Use DAO cuando quiera:
-
Crear un formulario vinculado de lectura y escritura sin VBA.
-
Consultar tablas locales.
-
Descargar datos en tablas temporales.
-
Usar consultas de paso a través como orígenes de datos para informes o formularios en modo de solo lectura.
-
Definir y usar un objeto TableDef o QueryDef en VBA.
Use ADO cuando quiera:
-
Aprovechar formas adicionales de optimización, como llevar a cabo de operaciones asincrónicas.
-
Ejecutar consultas de paso a través de DDL y DML.
-
Acceder a los datos de SQL Server directamente con los conjuntos de registros en VBA.
-
Escribir un código más sencillo para algunas tareas, como el streaming de blobs.
-
Llamar a un procedimiento almacenado directamente, con parámetros, mediante un objeto de comando en VBA.
Resumen de las versiones de controladores ODBC
En la tabla siguiente se resume información importante sobre las versiones de los controladores ODBC, las ubicaciones de descarga y la compatibilidad con características. Asegúrese de usar la versión de bits correcta (64 bits o 32 bits) del controlador, basándose en Windows y no en Office. Si está ejecutando Access de 32 bits en Windows de 64 bits, instale los controladores de 64 bits, pues incluyen los componentes de 32 bits necesarios para Access.
Para obtener más información, consulte Usar palabras clave de cadena de conexión con SQL Server Native Client, Notas sobre ODBC a SQL Server en Windows (V17) y Características de Microsoft ODBC Driver for SQL Server en Windows (V13, 11).
Resumen de las versiones del proveedor de OLE DB
En la tabla siguiente se resume información importante sobre las versiones de los proveedores OLE DB, las ubicaciones de descarga y la compatibilidad con características. Asegúrese de usar la versión de bits correcta (64 bits o 32 bits) del controlador, basándose en Windows y no en Office. Si está ejecutando Access de 32 bits en Windows de 64 bits, instale los controladores de 64 bits, pues incluyen los componentes de 32 bits necesarios para Access.
Para obtener más información, consulte Uso de palabras clave de cadena de conexión con SQL Server Native Client.
Proveedor OLE DB |
Versión |
Descargar |
Nuevas características |
Controlador de OLE DB 18.2.1 (MSOLEDBSQL) |
SQL Server 2017 |
Controlador OLE DB para característica de SQL Server y Notas para controlador de Microsoft OLE DB para SQL Server |
|
SQL Server Native Client (SQLNCLI) |
SQL Server 2005 a 2012 |
Obsoleto, se desaconseja su uso |
|
Controlador OLE DB (SQLOLEDB) |
Obsoleto, se desaconseja su uso |
Resumen de palabras clave de ODBC
La siguiente tabla resume las palabras clave de ODBC reconocidas por SQL Server y su finalidad. Access solo reconoce un subconjunto de ellas.
Palabra clave: |
Descripción |
Dir |
La dirección de red del servidor en el que se ejecuta una instancia de SQL Server. |
AnsiNPW |
Especifica el uso de comportamientos definidos en ANSI para tratar con comparaciones de NULOS, advertencias, relleno de datos de caracteres, advertencias y concatenación de NULOS (sí o no). |
APP |
Nombre de la aplicación que llama a SQLDriverConnect. |
ApplicationIntent |
Declara el tipo de carga de trabajo de la aplicación al conectarse a un servidor (ReadOnly o ReadWrite). |
AttachDBFileName |
Nombre del archivo principal de una base de datos adjuntable. |
AutoTranslate |
Especifica si las cadenas de caracteres ANSI se envían entre el cliente o el servidor o se traducen a Unicode (sí o no). |
Database |
El nombre de la base de datos. Description El propósito de la conexión. Driver Nombre del controlador devuelto por SQLDrivers. |
DSN |
El nombre de un usuario o un origen de datos de sistema ODBC existente. Encrypt Especifique si los datos deben cifrarse antes de enviarse a través de la red (sí o no). |
Failover_Partner |
Nombre del servidor asociado de conmutación por error que se usará en caso de que no se pueda establecer una conexión con el servidor principal. |
FailoverPartnerSPN |
El SPN del asociado de conmutación por error. |
Fallback |
Palabra clave obsoleta. |
FileDSN |
El nombre de un origen de datos de archivo ODBC existente. Language El idioma de SQL Server. |
MARS_Connection |
Especifica los conjuntos de resultados activos múltiples (MARS) en la conexión de SQL Server 2005 (9.x) o posterior (sí o no). |
MultiSubnetFailover |
Especifica si desea que se conecte al agente de escucha del grupo de disponibilidad de un grupo de disponibilidad de SQL Server o una instancia de clúster de conmutación por error (sí o no). |
Net |
dbnmpntw indica las canalizaciones con nombre y dbmssocn indica TCP/IP. |
PWD |
La contraseña de inicio de sesión de SQL Server. |
QueryLog_On |
Especifica si desea mantener un registro de consultas de larga ejecución (sí o no). |
QueryLogFile |
La ruta de acceso completa y el nombre de un archivo que se usa para registrar datos en consultas de larga ejecución. |
QueryLogTime |
Cadena de dígitos que especifica el umbral (en milisegundos) para registrar consultas de larga duración. |
QuotedId |
Especifica si SQL Server usa las reglas ISO en lo que respecta al uso de comillas en las instrucciones SQL (sí o no). |
Regional |
Especifica si el controlador ODBC de SQL Server Native Client usa la configuración de cliente al convertir datos de divisa, fecha u hora en datos de caracteres (sí o no). |
SaveFile |
Nombre de un archivo de origen de datos ODBC en el que se guardarán los atributos de la conexión actual si la conexión se ha realizado correctamente. |
Server |
El nombre de una instancia de SQL Server: Servidor en la red, una dirección IP o un alias de Configuration Manager. |
ServerSPN |
El SPN del servidor. |
StatsLog_On |
Habilita la captura de datos de rendimiento del controlador ODBC de SQL Server Native Client. |
StatsLogFile |
La ruta de acceso completa y el nombre de un archivo que se usa para registrar las estadísticas de rendimiento del controlador ODBC de SQL Server Native Client. |
Trusted_Connection |
Especifica si se usa el modo de autenticación de Windows o el nombre de usuario o la contraseña de SQL Server para la validación de inicio de sesión (sí o no). |
TrustServerCertificate |
Cuando se usa con Encrypt, habilita el cifrado con un certificado de servidor autofirmado. |
UID |
El nombre de inicio de sesión de SQL Server. |
UseProcForPrepare |
Palabra clave obsoleta. |
WSID |
El identificador de la estación de trabajo, el nombre de red del equipo en el que se encuentra la aplicación. |
Resumen de palabras clave de OLE DB
La siguiente tabla resume las palabras clave de OLE DB reconocidas por SQL Server y su finalidad. Access solo reconoce un subconjunto de ellas.
Palabra clave: |
Descripción |
Dir |
La dirección de red del servidor en el que se ejecuta una instancia de SQL Server. |
APP |
Cadena que identifica la aplicación. |
ApplicationIntent |
Declara el tipo de carga de trabajo de la aplicación al conectarse a un servidor (ReadOnly o ReadWrite). |
AttachDBFileName |
Nombre del archivo principal de una base de datos adjuntable. |
AutoTranslate |
Configura la conversión de caracteres OEM/ANSI (verdadero o falso). |
Connect Timeout |
Cantidad de tiempo (en segundos) que se esperará hasta que se complete la inicialización del origen de datos. |
Current Language |
El nombre del idioma de SQL Server. |
Data Source |
El nombre de una instancia de SQL Server en la organización. |
Database |
El nombre de la base de datos. |
DataTypeCompatibility |
Un número que indica el modo de administración de los tipo de datos que se va a usar. |
Encrypt |
Especifique si los datos deben cifrarse antes de enviarse a través de la red (sí o no). |
FailoverPartner |
El nombre del servidor de conmutación por error usado para la creación de reflejo de la base de datos. |
FailoverPartnerSPN |
El SPN del asociado de conmutación por error. |
Initial Catalog |
El nombre de la base de datos. |
Initial File Name |
El nombre del archivo principal (incluido el nombre completo de la ruta de acceso) de una base de datos que se puede adjuntar. |
Integrated Security |
Se utiliza para la autenticación de Windows (SSPI). |
Language |
El idioma de SQL Server. |
MarsConn |
Especifica los conjuntos de resultados activos múltiples (MARS) en la conexión de SQL Server 2005 (9.x) o posterior (sí o no). |
Net |
Biblioteca de red usada para establecer una conexión con una instancia de SQL Server en la organización. |
Network Address |
La direcciones de red de una instancia de SQL Server en la organización. |
PacketSize |
Tamaño de paquete de red. El valor predeterminado es 4096. |
Persist Security Info |
Especifica si la seguridad persistente está habilitada (verdadero o falso). |
PersistSensitive |
Especifica si la confidencialidad persistente está habilitada (verdadero o falso). |
Provider |
Para SQL Server Native Client debe ser SQLNCLI11. |
PWD |
La contraseña de inicio de sesión de SQL Server. |
Server |
El nombre de una instancia de SQL Server: Servidor en la red, una dirección IP o un alias de Configuration Manager. |
ServerSPN |
El SPN del servidor. |
Timeout |
Cantidad de tiempo (en segundos) que se esperará hasta que se complete la inicialización del origen de datos. |
Trusted_Connection |
Especifica si se usa el modo de autenticación de Windows o el nombre de usuario o la contraseña de SQL Server para la validación de inicio de sesión (sí o no). |
TrustServerCertificate |
Especifica si un certificado de servidor está validado (verdadero o falso). |
UID |
El nombre de inicio de sesión de SQL Server. |
Use Encryption for Data |
Especifique si los datos deben cifrarse antes de enviarse a través de la red (verdadero o falso). |
UseProcForPrepare |
Palabra clave obsoleta. |
WSID |
El identificador de la estación de trabajo, el nombre de red del equipo en el que se encuentra la aplicación. |