Cómo proporciona autenticación de usuario al abrir Jet vinculada tablas a orígenes de datos ODBC

Seleccione idioma Seleccione idioma
Id. de artículo: 245587 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

En Microsoft Access, al vincular primero (adjuntar) una tabla externa mediante un controlador ODBC, tiene la opción para almacenar el identificador de usuario y la contraseña para la tabla localmente. Si no almacena el identificador y la contraseña localmente, se le pedirá más adelante para dicha información cuando se abre la tabla.

Si abre la tabla a través de ActiveX Data Objects (ADO), recibirá este error de tiempo de ejecución:
"Error de ODBC-2147467259(80004005): conexión para 'Servidor'"
El error se produce porque la cadena de conexión no está completa.

En este artículo muestra cómo abrir una tabla vinculada de Microsoft Access en ADO mediante pre-connecting de base de datos y proporcionar ID de usuario y la contraseña mediante programación en Visual Basic.

Más información

El artículo de Knowledge Base
177594Cómo omitir inicio de sesión preguntar al abrir la tabla vinculada
Describe cómo realizar este proceso con datos de acceso a objetos (DAO). Sin embargo, esto no convierte directamente a ADO. En DAO, todas las bases de datos se abren con la misma instancia de Microsoft Jet. Autenticación en caché en una base de datos estará disponible para todos. En ADO, cada conexión crea una nueva instancia de Microsoft Jet. Autenticación en caché en una conexión no está disponible para otras conexiones.

Existen tres soluciones:
  • Abrir el origen de datos ODBC directamente en omitir completamente el motor Jet de ADO. La ventaja de este método es el rendimiento. El inconveniente es que esta técnica no permite combinaciones heterogéneas entre tablas ODBC y Jet.
  • Al crear la tabla vinculada, elegir que la información de autenticación almacenada como parte del vínculo. La ventaja es que puede realizar combinaciones heterogéneas con datos de Jet locales. El inconveniente es que cada usuario obtiene la autenticación misma. Además, cualquier persona que puede abrir la base de datos podrán abrir la tabla vinculada, eludir protecciones de programa, aunque puede solucionar esto mediante una contraseña de la base de datos o la seguridad de usuario.
  • Preautenticar el inicio de sesión ODBC mediante una técnica similar al descrito en el artículo mencionado en el primer párrafo de esta sección. La ventaja es que Evite almacenar la autenticación en el Jet base de datos, cada usuario puede tener una autenticación independiente y puede realizar uniones con datos de Jet locales.
Para preautenticar tener acceso a ODBC en ADO, debe utilizar la misma conexión en el que se abra la tabla vinculada. Microsoft Jet proporciona sintaxis para hacer referencia a una base de datos externo y se almacenarán en caché la información de autenticación.

La aplicación de ejemplo utiliza la base de datos "pubs" de Microsoft SQL Server para ilustrar la técnica. Para obtener un mejor rendimiento, puede crear una tabla ficticia que contiene un solo campo y no hay registros para utilizar en la instrucción de autenticación previa.
  1. En Microsoft Access 2000, abra NorthWind.mdb y vincular una tabla a un origen de datos ODBC. En este ejemplo, la tabla vinculada, utiliza el nombre de origen de datos (DSN) de MyServer, la base de datos pubs y la tabla authors. No guarde la contraseña.
  2. En Microsoft Visual Basic versión 5.0 ó 6.0, en el menú proyecto, elija referencias y agregue una referencia a Microsoft ActiveX Data Objects (versión 2.1 o posterior) Library.
  3. Agregue dos botones de comando (cmdOpenLink y cmdPreAuthenticate).
  4. Agregue el código siguiente al módulo del formulario:

    Nota Debe cambiar User ID = < ID. de Usuario > y la contraseña = < Contraseña Strong > a los valores correctos antes de ejecutar este código. Asegúrese de que el identificador de usuario tiene las permisos adecuados realizar esta operación en la base de datos.
    Option Explicit
    
    Dim cn As ADODB.connection
    
    Private Sub cmdOpenLink_Click()
    '
    ' Opens a linked table
    '
    Dim rs As ADODB.Recordset
      Set rs = New ADODB.Recordset
      rs.open "dbo_authors", cn, adopenkeyset, adlockoptimistic, adcmdtable
      rs.movelast
      Debug.Print "There are"; rs.recordcount; "records."
      rs.Close
    End Sub
    
    Private Sub cmdPreAuthenticate_Click()
    '
    ' Opens a dummy recordset on a table using the same connection properties
    ' as the linked table. This could be a dummy UPDATE statement to avoid the
    ' overhead of recordset creation.
    '
    Dim rs As ADODB.Recordset
      Set rs = cn.execute("SELECT * FROM [ODBC;DSN=MyServer;uid=<User ID>;pwd=<Strong Password>;database=pubs].Authors WHERE FALSE")
      rs.close
    End Sub
    
    Private Sub Form_Load()
      Set cn = New ADODB.connection
      cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
    End Sub
    					
  5. Ejecute la aplicación y abra el formulario. Haga clic en cmdOpenLink . Aparecerá un error en tiempo de ejecución.
  6. Finalizar la aplicación y reinicie. Haga clic en cmdPreAuthenticate y, a continuación, haga clic en cmdOpenLink . La ventana Inmediato/Debug mostrará el número de registros.

Propiedades

Id. de artículo: 245587 - Última revisión: martes, 13 de julio de 2004 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1 Service Pack 1
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Edición de aprendizaje
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Palabras clave: 
kbmt kbclient kbdatabase kbhowto kbjet KB245587 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 245587

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com