只读/备用数据库上的 Snapshot_isolation_state_desc

SQL*_*ert 7 sql-server transaction-log log-shipping snapshot-isolation

我已经配置了日志传送,其中主服务器数据库snapshot_isolation_state_desc报告为off. 我试图通过使用 GUI 和使用 T-SQL 语句禁用它在作为备用只读的辅助服务器上关闭它:

ALTER DATABASE ABC SET ALLOW_SNAPSHOT_ISOLATION OFF;
Run Code Online (Sandbox Code Playgroud)

但是,它会在每次 SQL Server 重新启动时重新打开。

这是预期的行为吗?如果是这样,为什么?

Pau*_*ite 7

SQL Server 似乎总是在将数据库设为只读时设置快照隔离 (SI)。我不知道它为什么这样做,但确实如此。

您可以尝试将其关闭,该ALTER DATABASE语句会成功,但在数据库为只读时快照隔离仍处于启用状态。

一种理论是,设置 SI 可以防止运行 SI 事务和访问只读数据库的人出现意外错误,但似乎应该有更深层次的技术原因。

无论如何,这种行为是“正常的”,因此您不必担心。