在 Exchange 2013 中使用 CHKSGFILES API 验证备份完整性
了解如何使用 CHKSGFILES API 在 Exchange 2013 中验证 Exchange 存储的备份。
适用于:Exchange Server 2013
在卷影复制服务 (VSS) 管理的备份操作期间,Exchange Server 2013 无法完整读取每个数据库文件并验证其校验和完整性。 因此,你可能希望备份应用程序验证数据库和事务日志文件的完整性。 建议备份应用程序先验证卷影副本集的物理一致性,然后再通知 Exchange 编写器备份已完成。 成功备份后,Exchange 存储会更新备份数据库的标头以反映上次成功备份的时间,并从服务器中删除不再需要从上次成功备份前滚的事务日志。
验证备份完整性的先决条件
在应用程序验证备份的完整性之前,必须有权访问以下各项:
- Exchange 存储备份中的文件。
- 从 Visual Studio 2010 开始的 Visual Studio 版本。
- CHKSGFILES 库和头文件。 可以从 Microsoft 下载中心下载库和头文件。
验证备份完整性
以下过程介绍如何在备份和还原应用程序中验证数据完整性。
验证备份完整性
创建 CChkSGFiles 类的新实例。
CCheckSGFiles::ERRerr = CCheckSGFiles::errSuccess; ULONGiDbError = (ULONG)CCheckSGFiles::iDbInvalid; CCheckSGFiles * const pcchecksgfiles = CCheckSGFiles::New(); if ( NULL == pcchecksgfiles ) { err = CCheckSGFiles::errOutOfMemory; printf( "ERROR: Could not allocate CCheckSGFiles object.\n" ); goto HandleError; }
第一行代码创建错误对象并将其初始值设置为成功,并创建一个对象来检查数据库的有效性。 然后, CChkSGFiles.New 函数 创建 CChkSGFiles 类的新实例。 快速检查新对象指示创建新实例时是否发生任何问题。
初始化 CChkSGFiles 对象。
Call( pcchecksgfiles->ErrInit( rgwszDb, cDb, wszLogPath, wszBaseName ) );
有关参数的详细信息,请参阅 CChkSGFiles.ErrInit 函数。
使用 CChkSGFiles.ErrCheckDbHeaders 函数 通过检查数据库标头来验证数据库完整性。
err = pcchecksgfiles->ErrCheckDbHeaders( &cbDbPageSize, &cDbHeaderPages, &iDbError ); if ( CCheckSGFiles::errSuccess != err ) { if ( CCheckSGFiles::iDbInvalid != iDbError ) { printf( "ERROR: Database header validation for '%S' failed with error %d (0x%x)\n", rgwszDb[ iDbError ], err, err ); } goto HandleError; }
有关参数的详细信息,请参阅 CChkSGFiles.ErrCheckDbHeaders 函数。
处理错误,并使用 CChkSGFiles.Delete 函数 从内存中删除 CChkSGFiles 类。
HandleError: CCheckSGFiles::Delete( pcchecksgfiles );