这是我们在 SQL Server 2008 数据库镜像故障转移中遇到的一个奇怪的情况。
我们有一对镜像数据库在高可用性模式下运行,主数据库和镜像数据库均显示为同步。作为某些维护工作的一部分,我触发了将主数据库手动故障转移到镜像数据库的操作。然而,故障转移后,主数据库现在处于单用户模式,而不是我们通常所期望的“主数据库/同步”状态。在发生这种情况之前,数据库在之前的主数据库中处于多用户模式。我们最终停止了所有应用程序,重新启动了 SQL Server 实例,并执行了“ALTER DATABASE ... SET MULTI_USER”,以使数据库在多用户模式下恢复到预期的“主数据库/同步”状态。
问题。
有谁知道 SQL Server 在哪里存储有关数据库是否应处于单用户模式的信息?我想知道是否有某个系统数据库或表在某处记录了此设置。特别是,我们曾经遇到过一次与原始主体(我故障转移到的那个)上的数据库有关的事件,当尝试分离数据库时,它被置于单用户模式。我想知道该设置是否缓存在某处,并且是 SQL Server 在故障转移后将其重新置于单用户模式的原因。
答案1
对于 SQL Server 2005 或更高版本,用于判断数据库是单用户还是多用户的数据库视图是 sys.databases - 它是 user_access_desc 列。