SQL Server 数据库编码

0 sql-server-2008 sql-server

我在 SQL Server 2008 中的数据库进入了可疑模式,我通过更改为紧急模式来修复它,然后我使用了这个查询

DBCC CHECKDB (Test, REPAIR_ALLOW_DATA_LOSS);
Run Code Online (Sandbox Code Playgroud)

现在我的表格中的数据字母从阿拉伯语变为问号,我想恢复编码而不丢失表格或丢失数据

Rem*_*anu 6

您已经通过运行损坏了数据库REPAIR_ALLOW_DATA_LOSS。您需要专业人士来评估您的数据库中的损失,看看哪些是可以恢复的,以及如何恢复。联系产品支持

下次知道最合适的操作是从最近的未损坏备份中恢复。


Edw*_*and 6

除此之外,您还需要更改维护策略中的一些内容。

定期检查您的数据库是否处于正确状态并且不包含任何逻辑或物理不一致非常重要。

DBCC CHECKDB定期跑步是必须的。早期检测至关重要,因为腐败永远不会发生,您有更大的潜在问题,因此在早期发现它可能会防止您陷入灾难。其次,及早检测有助于避免备份的损坏。让你一无所有。

从 SQL 2005 开始,添加了页面验证校验和。在 sql 2005 和更高版本中创建的数据库默认使用此设置。较早创建和升级的数据库可能仍设置了旧的验证策略“刺页检测”。仔细检查一下。

校验和为您提供了检测页面任何部分损坏的选项,甚至是 inrow 修改,并且作为一个很大的好处,当您将选项添加WITH CHECKSUM到备份语句时,您的页面将在运行备份时进行校验和测试。确保您的备份中没有损坏的数据库。

所以这里有几件事:

  1. 检查您当前的硬件、存储系统是否有错误。腐败不仅发生了。您仍然必须解决根本原因。
  2. 在存储在同一系统上的所有其他数据库上运行 checkdb

为将来:

  1. 检查所有数据库是否启用了 page_verify 校验和。相应地改变:ALTER DATABASE DBname SET PAGE_VERIFY CHECKSUM;
  2. 开始DBCC CHECKDB定期跑步。如果可能的话,每天。如果您遇到性能问题,请考虑仍然使用该选项每天运行PHYSICAL_ONLY
  3. 添加WITH CHECKSUM到所有备份命令中,以确保您知道只有干净的备份。

希望这可以防止您以后遇到麻烦。我祝您好运,让您当前的数据库重新启动并运行。