如果事务成功提交,那么我能否100%确保已将其写入数据库和日志文件?我可以确定数据已保存吗?
今天,我们的日志文件已达到驱动器的极限,并且出现了很多错误。此外,其他一些服务崩溃了。我们增加了磁盘并重新启动了服务器。
在启动过程中,服务器进行了“数据库恢复”-我可以确定一切都还好吗?
2
恢复完成后,您可以检查错误日志,以查看已提交的事务数和已回滚的事务数。对此没有万能的答案-如果磁盘崩溃了,那一切都取决于当时的事务状态。
—
亚伦·伯特兰
@AaronBertrand但是,如果事务处于“已提交”状态(即,提交成功),那么在恢复过程中又怎么会丢失它呢?
—
SQL警察
@Giosco:不能。“ committed”表示它在数据库的日志文件中。此后丢失它的唯一方法是:1)在将日志文件也保存到数据文件之前丢失日志文件,或2)丢失日志文件和数据文件,或者3)人为错误。注意,(3)通常是最可能的。
—
RBarryYoung
@Giosco您如何知道已成功完成整个驱动器中的所有交易?
—
亚伦·伯特兰
存储过程<>事务-您的存储过程可以有多个显式事务,也可以只有隐式事务,可以有try / catch逻辑,可以在C#层进行事务处理,依此类推。等等。再次,假设没有异常=成功提交笼统地说可能有点太危险了。
—
亚伦·伯特兰