最近,我的 ~40Gb 数据库中经常出现许多一致性错误。当然,我使用DBCC CHECKDB
, 即使REPAIR_ALLOW_DATA_LOSS
(当它询问时),但是我再次遇到错误,即使在只读操作之后也是如此。
数据库本身存储在 SSD 驱动器上,这没问题,所以我怀疑数据库文件中存在一些隐藏的错误。
所以,完整的周期:我在本地 PC 上安装了 MSSQL 2016,只连接了 1 个用户。每天我都以自定义格式获取数据(~1.5M 记录),备份基础并将数据插入基础(非批量插入,索引)。在那次行动中,没有人接触基地。后来我不时进行高负载查询(不同的统计数据)。我经常遇到一致性错误、校验和错误、索引错误(目前没有存储确切的输出)。可以通过重建索引来纠正索引错误;其他人只能通过DBCC CHECKDB
使用该REPAIR_ALLOW_DATA_LOSS
选项来修复。之后,它再次工作 - 一段时间。
我不相信问题出在我的 SSD 驱动器上。在过去的几年里,我在这台 PC 上尝试了不同的驱动器,行为没有改变。
我怀疑,即使在DBCC CHECKDB
成功运行后,文件结构中也存在一些隐藏的错误,这些错误会导致以后出现新的错误。所以我只想将数据提取到线性文件然后导入。标准导出向导导出数百行,然后停止没有错误。
是否有一种正确且可靠的方法可以将整个数据库导出到文本/二进制文件(但不是 mssql),然后重新创建数据库而不会丢失这些文件中的数据?我尝试了备份还原,但看起来数据库一致性问题在还原过程中仍然存在。