Düzeltme: REPAIR_DB seçenek Access 2000 veritabanından şifrelemesini kaldırma

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

298145
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Belirtiler
Şifrelenmiş bir Microsoft Access veritabanı dosyası üstünde REPAIR_DB seçenek SQLConfigDataSource ODBC API çağrısı kullanırsanız, veritabanını düzgün onarıldı, ancak şifreleme kaldırılır.
Neden
Bu, Microsoft Jet ODBC gelen sürücüleri (Odbcjt32.dll) Microsoft Data Access Components (MDAC) 2.5 Service Pack 2 ve daha önceki bir sorundur.
Çözüm
Bu sorunu gidermek için <a0></a0>, Microsoft, MDAC 2.5 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
293312BILGI: son MDAC 2.5 nasıl elde edilir hizmet paketi
Bu düzeltmenin İngilizce sürümünde aşağıdaki dosya öznitelikleri veya üstü bulunur:
   Date        Version      Size            File name      Platform   ----------------------------------------------------------------   12/04/2001  4.0.7412.0   270,608 bytes   Odbcjt32.dll   x86				

Pratik Çözüm
Bu soruna geçici bir çözüm bulmak için <a0></a0>, veritabanını onarmak için CDaoWorkspace::RepairDatabase işlevini kullanın.
Durum
Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır. Bu sorun ilk olarak Microsoft MDAC 2.5 Service Pack 3'te giderilmiştir.
Daha fazla bilgi
Aşağıdaki kod sorunu reproduces:
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!");}				

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 298145 - Son İnceleme: 02/24/2014 17:49:07 - Düzeltme: 3.2

  • Access 4.0 için Microsoft Open Database Connectivity Sürücüsü
  • 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 KbMttr
Geri bildirim