首页 新闻 会员 周边 捐助

SQL Server 2016 secondary 经常报错 error 3456, 该如何解决这个问题?

0
悬赏园豆:100 [已解决问题] 解决于 2019-08-28 19:58

Could not redo log record (410417:192254:28), for transaction ID (0:1838907632), on page (1:761914), allocation unit 72057594280869888, database '****' (database ID 5). Page: LSN = (410417:191949:3), allocation unit = 72057594280869888, type = 10. Log: OpCode = 7, context 10, PrevPageLSN: (410417:192254:26). Restore from a backup of the database, or repair the database.

Version:

Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64)
Mar 18 2018 09:11:49
Copyright (c) Microsoft Corporation Enterprise Edition (64-bit)
on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393) (Hypervisor)

从日志上看这个错误经常出在Truncate 表后的 Insert 操作时的首页分配(Allocate First Page)。

SELECT *
FROM fn_dump_dblog ('410417:191949:3', '410417:192254:28', N'DISK', 1, N'E:\BackUp\dbname_2019_05_04_020310_6766368.trn',
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)
WHERE [transaction ID] ='0000:6d9b80f0'

小小小蘑菇的主页 小小小蘑菇 | 初学一级 | 园豆:88
提问于:2019-05-15 10:11
< >
分享
最佳答案
0

每次出现 3456 错误后,从日志上去查看对应的事务信息时,每次对应的对象都是两个物理表(Temp_Table1/Temp_Table2:这两个都用于将内存数据更新到DB时用到的中转表,会频繁的 Truncate—> Insert)。对应的操作都是在Truncate 表后的 Insert 操作时的首页分配(Allocate First Page)。
猜测是频繁 Truncate—> Insert 物理表造成的。将两个中转表改为临时表后问题解决了。

小小小蘑菇 | 初学一级 |园豆:88 | 2019-08-28 19:54
其他回答(1)
0
收获园豆:100
dudu | 园豆:30939 (高人七级) | 2019-05-15 13:19

在这个错误之前没有更多可参考的Windows事件日志。我看了每次出错的事务都是在为一个表做第一个数据页分配空间,这个表我们会频繁的Truncate和Insert。我之前两天收缩一次数据库,辅助副本就一两天出一次3456,我现在不收缩数据库了它隔个七八天出一次3456.这都觉得是微软的产品有问题。但不知道怎么解决。这是他们修复3456的更新包在2016 的SP1,但我现在都在SP2了https://support.microsoft.com/en-us/help/3173471/fix-could-not-redo-log-record-error-and-replica-is-suspended-in-sql-se

支持(0) 反对(0) 小小小蘑菇 | 园豆:88 (初学一级) | 2019-05-16 10:04

@小小小蘑菇: 可能是数据库文件有损坏

支持(0) 反对(0) dudu | 园豆:30939 (高人七级) | 2019-05-16 10:07

@dudu: 用 DBCC CHECKDB 检查,没有错误信息返回。

支持(0) 反对(0) 小小小蘑菇 | 园豆:88 (初学一级) | 2019-05-16 14:35

@小小小蘑菇: 如果可行,建议重新安装一个 SQL Server ,然后将数据迁移过去

支持(0) 反对(0) dudu | 园豆:30939 (高人七级) | 2019-05-16 15:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册