Entrar

CORRECÇÃO: REPAIR_DB opção pode remover a criptografia de banco de dados do Access 2000

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

298145
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Se você usar a chamada de API de ODBC SQLConfigDataSource com a opção REPAIR_DB em um arquivo de banco de dados criptografado do Microsoft Access, o banco de dados for reparado corretamente, mas a criptografia é removida.
Causa
Este é um problema no Microsoft Jet Drivers do ODBC (Odbcjt32.dll) que são fornecidos com o Microsoft Data Access Components (MDAC) 2.5 Service Pack 2 e anterior.
Resolução
Para resolver esse problema, obtenha o service pack mais recente para o Microsoft MDAC 2.5. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
293312INFO: Como obter o último MDAC 2.5 Service Pack
A versão em inglês dessa correção deve ter os seguintes atributos de arquivo 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 esse problema, use a função CDaoWorkspace::RepairDatabase para reparar o banco de dados.
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi corrigido primeiro no Microsoft MDAC 2.5 Service Pack 3.
Mais Informações
O código a seguir 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!");}				

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 298145 - Última Revisão: 02/24/2014 20:20:57 - Revisão: 3.2

  • Driver 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
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbmdac250sp3fix kbjet kbmdacnosweep kbprb KB298145 KbMtpt
Comentários