我们将 SQL Server 数据库移至 Azure 中的虚拟机。
由于数据库仅包含历史数据并且不再有事务,我们希望按计划关闭和打开 VM 以降低成本。
据我所知,如果机器在事务中间重新启动,可能会发生数据库损坏,所以我对此有三个问题:
当机器关闭时,数据库损坏是否会发生在不再有事务的数据库中?
是否有正确的方法来关闭机器并避免损坏情况?
我们应该让这台机器以 7 x 24 的速度运行吗?
我们将 SQL Server 数据库移至 Azure 中的虚拟机。
由于数据库仅包含历史数据并且不再有事务,我们希望按计划关闭和打开 VM 以降低成本。
据我所知,如果机器在事务中间重新启动,可能会发生数据库损坏,所以我对此有三个问题:
当机器关闭时,数据库损坏是否会发生在不再有事务的数据库中?
是否有正确的方法来关闭机器并避免损坏情况?
我们应该让这台机器以 7 x 24 的速度运行吗?
不会。数据库损坏仅由存储系统故障或错误引起。SQL Server 将在启动时执行崩溃恢复,以恢复任何具有未应用事务日志记录或已被未提交事务更改的数据库。
这是一个经过很好测试的过程,每天在数千个生产数据库上运行。
在这种情况下,拥有一个正常的 SQL Server 备份就足以提供保护。
如果您杀死机器,有几种情况可能会遇到麻烦:
如果磁盘子系统不遵守某些规则(例如写入顺序)。有一个名为 SQLIOSIM.EXE 的工具随 SQL Server 一起安装,您可以使用它来测试这些东西。考虑到您在 Azure 上,如果您在该领域有任何问题,我会感到惊讶。此经典白皮书中的更多信息:https ://bobsql.com/sql-server-io-basics-chapter-1/#_Toc92876356
如果您在大型事务的中间关闭,那么您在启动时会发生大量回滚,并且没有足够的空间让 ldf 文件增长。