REVISIÓN: REPAIR_DB opción puede quitar el cifrado de base de datos de Access 2000

Seleccione idioma Seleccione idioma
Id. de artículo: 298145 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

Síntomas

Si utiliza la llamada a SQLConfigDataSource API de ODBC con la opción REPAIR_DB en un archivo de base de datos cifrada de Microsoft Access, la base de datos se repara correctamente pero se quita el cifrado.

Causa

Se trata de un problema de Microsoft Jet ODBC Drivers (Odbcjt32.dll) que se incluyen con Microsoft Data Access Components (MDAC) 2.5 Service Pack 2 y versiones anterior.

Solución

Para resolver este problema, obtenga el service pack más reciente de Microsoft MDAC 2.5. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
293312INFO: Cómo obtener la más reciente de MDAC 2.5 Service Pack
La versión en inglés de esta revisión debe tener los atributos de archivo siguientes o posteriores:
   Date        Version      Size            File name      Platform
   ----------------------------------------------------------------
   12/04/2001  4.0.7412.0   270,608 bytes   Odbcjt32.dll   x86
				

Solución

Para evitar este problema, utilice la función CDaoWorkspace::RepairDatabase para reparar la base de datos.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo. Este problema se corrigió por primera vez en MDAC 2.5 Service Pack 3 de Microsoft.

Más información

El código siguiente reproduce el problema:
void Repair(BOOL bEncrypt)
{
	CString strDBQ = "d:\\NWind.mdb", strSystemDB = "d:\\System.mdw";
	CString strAttributes;
	strAttributes += "REPAIR_DB=";
	strAttributes += strDBQ;
	if (bEncrypt)
		strAttributes += " ENCRYPT";  // This additional keyword is an optimistic try and has no effect!!
	strAttributes += "|";
	strAttributes += "SYSTEMDB=";
	strAttributes += strSystemDB;
	strAttributes += "|";
	strAttributes += "EXCLUSIVE=TRUE";
	strAttributes += "|";
	strAttributes += "|";

	// Exchange pipes against nulls so the command is interpreted correctly.
	for (int i = 0; i < strAttributes.GetLength(); i++)
	{
		if (strAttributes[i] == '|')
			strAttributes.SetAt(i, char(0));
	}

	BOOL b = SQLConfigDataSource(NULL, ODBC_CONFIG_SYS_DSN, "Microsoft Access Driver (*.mdb)",
		(LPCSTR) strAttributes);
	if (!b)
	{
		CString strErrorMsg;
		for (int i = 1; i <= 8; i++)
		{
			WORD cbErrorMsg;
			DWORD dwErrorCode;
			RETCODE r = SQLInstallerError(i, &dwErrorCode, strErrorMsg.GetBuffer(100), 100, &cbErrorMsg);
			if (r == SQL_NO_DATA)
				break;
			strErrorMsg.ReleaseBuffer(cbErrorMsg);
			TRACE("Rec: %d: %d, %x (%s)\n", i, r, dwErrorCode, (const char *) strErrorMsg);
		}

		AfxMessageBox("Repair failed!");
	}
	else
		AfxMessageBox("Repair succeeded!");
}
				

Propiedades

Id. de artículo: 298145 - Última revisión: lunes, 24 de febrero de 2014 - Versión: 3.2
La información de este artículo se refiere a:
  • Microsoft Open Database Connectivity Driver for Access 4.0
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.5 Service Pack 2
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
Palabras clave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbmdac250sp3fix kbjet kbmdacnosweep kbprb KB298145 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): 298145

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