PRB: Error "3050 no pudo bloquear el archivo" cuando se conecta a una base de datos de Jet en un servidor Novell

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): 305995
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.
Síntomas
Cuando intenta utilizar objetos de acceso a datos (DAO) para conectarse a una base de datos de Microsoft Jet en un servidor de archivos de Novell, puede recibir el siguiente mensaje de error:
3050 no se pudo bloquear el archivo.
Causa
Este problema se produce porque los servidores de archivos Novell tienen un número máximo de configuración de bloqueos y Jet puede utilizar un gran número de bloqueos cuando lee o escribe un archivo .mdb.
Solución
Hay varias formas de evitar este comportamiento:
  • Utilice Regedit.exe o Regedt32.exe para editar el registro de Windows y cambiar el valor de MaxLocksPerFile de forma permanente.
  • Utilice el método SetOption del objeto DBEngine para cambiar temporalmente el valor de MaxLocksPerFile en el código.

Método 1: Cambiar MaxLocksPerFile en el registro de Windows

Importante: esta sección, el método o la tarea contiene pasos que indican cómo modificar el registro. Sin embargo, pueden producirse problemas graves si modifica incorrectamente el registro. Por lo tanto, asegúrese de que sigue estos pasos cuidadosamente. Para una mayor protección, haga una copia de seguridad del registro antes de modificarlo. Entonces, puede restaurar el registro si se produce un problema. Para obtener más información acerca de cómo hacer copia de seguridad y restaurar el registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
322756 Cómo hacer copia de seguridad y restaurar el registro de Windows
  1. En el menú Inicio de Windows, haga clic en Ejecutar, tipo Regedt32.exey, a continuación, haga clic en Aceptar para iniciar el Editor del registro.
  2. Busque el valor de MaxLocksPerFile bajo la siguiente clave del registro:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Jet 4.0
    Nota: si el valor de MaxLocksPerFile no existe, debe crearlo.
  3. Reduzca el valor de MaxLocksPerFile .
  4. Salga del Editor del registro.
Nota: este método cambia la configuración del registro de Windows allapplications que utilizan la versión de motor de base de datos de Microsoft Jet 4.0.

Método 2: Usar SetOption para cambiar MaxLocksPerFile temporalmente

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin garantía expresa o implícita, incluyendo, pero sin limitarse a, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. En este artículo se supone que está familiarizado con el lenguaje de programación que se demuestra y las herramientas utilizadas para crear y depurar procedimientos. Los profesionales de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus necesidades específicas.
Si tiene poca experiencia en programación, desea ponerse en contacto con un Microsoft Certified Partner o servicios de consultoría de Microsoft. Para obtener más información, visite estos sitios Web de Microsoft:

Microsoft certificada Partners: https://Partner.Microsoft.com/global/30000104

Servicios de asesoramiento de Microsoft- http://support.Microsoft.com/GP/advisoryservice

Para obtener más información acerca de las opciones de soporte que están disponibles y cómo ponerse en contacto con Microsoft, visite el siguiente sitio Web de Microsoft:http://support.Microsoft.com/default.aspx?scid=fh; EN-US; CNTACTMSEl método SetOption anula temporalmente los valores para las claves del motor de base de datos de Microsoft Jet en el registro de Windows. El nuevo valor permanece ineffect hasta que la cambie otra vez o hasta que se cierra el objeto DBEngine .

El ejemplo de código siguiente establece MaxLocksPerFile a 128 antes de ejecutar una operación de actualización dentro de una transacción:
Sub MDBUpdate()   On Error GoTo MDBUpdate_Error   Dim db As DAO.Database, ws As DAO.Workspace   ' Set MaxLocksPerFile.   DBEngine.SetOption dbMaxLocksPerFile, 128   Set db = CurrentDb   Set ws = Workspaces(0)   ' Perform the update.   ws.BeginTrans   db.Execute "UPDATE TableName SET Field1 = 'Updated Field'", _         dbFailOnError   ws.CommitTrans   db.Close   MsgBox "Done!"   Exit SubMDBUpdate_Error:   MsgBox Err & " " & Error   ws.Rollback   MsgBox "Operation Failed - Update Canceled"End Sub				
Estado
Este comportamiento es por diseño.

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 305995 - Última revisión: 10/04/2015 09:46:00 - Revisión: 5.0

  • kberrmsg kbjet kbprb kbmt KB305995 KbMtes
Comentarios