我有一个数据库,在其中运行备份命令
BACKUP DATABASE [MyDatabase] TO
DISK = 'G:\Backup\MyDatabase_01_01_2018.bak'
WITH NOFORMAT, NOSKIP, COMPRESSION, INIT, BUFFERCOUNT = 100
我收到错误消息
消息3043,级别16,状态1,第8行
BACKUP'MyDatabase'在文件'F:\ Data \ MyDatabase_1.ndf'中的页面(1:745345)中检测到错误。
消息3013,级别16,状态1,第8行
BACKUP DATABASE异常终止。
我运行了一个完整的CHECKDB,但恢复正常。我确实注意到页面验证选项已设置为NONE(不是我的工作),所以我将其更改为CHECKSUM并重建了数据库中的所有索引,使其可以写入所有页面并生成校验和。此后,备份仍然失败,并且checkdb仍显示为干净(因此无更改)。
DBCC CHECKDB('MyDatabase') WITH NO_INFOMSGS, ALL_ERRORMSGS,
DATA_PURITY, EXTENDED_LOGICAL_CHECKS;
从SQL日志中:
由xxx执行的具有all_errormsgs,no_infomsgs和data_purity的DBCC CHECKDB(MyDatabase)发现0个错误,并修复了0个错误。经过时间:0小时21分46秒。内部数据库快照的拆分点LSN = 000ab776:0000112f:0001和第一个LSN = 000ab776:0000112d:0001。
我运行了DBCC PAGE,但是它出错了(起初似乎都没有返回正确的页面)。我可以使用打印选项2运行它,但它会返回,但说实话我不知道我在那儿寻找什么。
DBCC PAGE ('MyDatabase',1,745345,3)
页面:(3:513793) 缓冲: BUF @ 0x00000003811F8280 bpage = 0x00000000F2D70000 bhash = 0x0000000000000000 bpageno =(1:745345) bdbid = 5 breferences = 0 bcputicks = 0 bsampleCount = 0 bUse1 = 44283 bstat = 0x809 博客= 0x5adb215a bnext = 0x0000000000000000 页面标题: 页面@ 0x00000000F2D70000 m_pageId =(3:513793)m_headerVersion = 1 m_type = 2 m_typeFlagBits = 0x4 m_level = 0 m_flagBits = 0x0 m_objId(AllocUnitId.idObj)= 1075937538 m_indexId(AllocUnitId.idInd)= 2 元数据:AllocUnitId = 633462595911680元数据:PartitionId = 0 元数据:IndexId = -1元数据:ObjectId = 0 m_prevPage =(3:513795) m_nextPage =(3:513820)pminlen = 17 m_slotCnt = 426 m_freeCnt = 2 m_freeData = 7338 m_reservedCnt = 0 m_lsn =(608841:643611:411)m_xactReserved = 0 m_xdesId =(0:0) m_ghostRecCnt = 0 m_tornBits = 0 DB Frag ID = 1 分配状态 GAM(1:511232)=已分配SGAM(1:511233)=未分配 PFS(1:744096)= 0x40分配的0_PCT_FULL DIFF(1:511238)=不变 ML(1:511239)= NOT MIN_LOGGED
消息2514,级别16,状态8,第20行
发生DBCC PAGE错误:无效的页面元数据-不可能转储样式3。
有什么想法我接下来可以尝试吗?服务器版本为
select @@version
Microsoft SQL Server 2014(SP2-CU11)(KB4077063)-12.0.5579.0(X64) 2018年2月21日12:19:47 版权所有(c)Microsoft Corporation Windows NT 6.3(内部版本9600:)(管理程序)上的Developer Edition(64位)
数据库的兼容级别为100(SQL 2008)。