CORRECÇÃO: REPAIR_DB opção pode remover a encriptação da base de dados do Access 2000

Traduções de Artigos Traduções de Artigos
Artigo: 298145 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Sintomas

Se utilizar a chamada de API de ODBC SQLConfigDataSource com a opção REPAIR_DB um ficheiro de base de dados do Microsoft Access encriptado, a base de dados é reparada correctamente, mas a encriptação é removida.

Causa

Este é um problema do Microsoft Jet controladores ODBC (Odbcjt32.dll) fornecidos com o Microsoft Data Access Components (MDAC) 2.5 Service Pack 2 e anterior.

Resolução

Para resolver este problema, obtenha o service pack mais recente do Microsoft MDAC 2.5. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
293312INFO: Como obter o mais recente MDAC 2.5 Service Pack
A versão inglesa desta correcção deverá ter os seguintes atributos de ficheiro ou posteriores:
   Date        Version      Size            File name      Platform
   ----------------------------------------------------------------
   12/04/2001  4.0.7412.0   270,608 bytes   Odbcjt32.dll   x86
				

Como contornar

Para contornar este problema, utilize a função CDaoWorkspace::RepairDatabase para reparar a base de dados.

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo. Este problema foi corrigido pela primeira vez no MDAC 2.5 Service Pack 3.

Mais Informação

O seguinte código reproduz o 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!");
}
				

Propriedades

Artigo: 298145 - Última revisão: 24 de fevereiro de 2014 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Controlador Microsoft Open Database Connectivity para 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
Palavras-chave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbmdac250sp3fix kbjet kbmdacnosweep kbprb KB298145 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 298145

Submeter comentários

 

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