SQL Server数据库管理与维护全攻略
1. 数据库应急状态与恢复选项
在数据库管理中,有时会遇到逻辑不一致的情况,比如银行账户意外存入100万美元却未察觉。将数据库设置为应急(EMERGENCY)状态虽能在一定程度上处理问题,但这只是万不得已的手段,绝不能替代从良好备份中恢复数据库。不过,在实际支持工作中,由于部分客户没有有效的备份,还是会经常使用这一技术。
此外,将数据库设置为应急状态还有其他用途,例如可以访问数据库并使用如bcp工具复制出对业务至关重要的表,这可作为数据库抢救操作的一种手段。
在恢复备份时,如果备份是使用WITH CHECKSUM选项创建,且备份介质出现校验和错误,恢复操作通常会失败。但在SQL Server 2005的特定版本中,新增了RESTORE的CONTINUE_AFTER_ERROR选项。多数情况下,即便出现错误(如校验和错误),该选项也能让恢复操作完成。不过,此时数据库是否可用或能否抢救成功就像抛硬币一样具有不确定性。但如果只是备份介质的一小部分(甚至单个比特)出现问题,这个选项可能有助于恢复大部分数据库。
2. 查找数据库损坏原因
多年来处理客户数据库损坏案例的经验表明,数据库损坏的首要原因通常是系统问题,大部分源于I/O系统。可以采用以下方法查找原因:
- 若运行DBCC CHECKDB或遇到校验和错误,且拥有涵盖问题时间段的数据库和事务日志备份序列,可将其恢复到另一台服务器上。
- 若这些备份有效,且按顺序恢复后未出现错误,那么问题可能出在