【问题标题】:Checking database mirroring status in C#在 C# 中检查数据库镜像状态
【发布时间】:2010-11-09 22:52:03
【问题描述】:

我们的 C# 应用程序需要连接到 SQL 2005 和 2008 数据库并检查数据库镜像的当前状态(例如,是否启用、暂停、暂停、断开等)。有没有可以检查的属性?

我们所有被镜像的数据库都没有见证和手动故障转移(同步镜像)。

如果有人可以提供帮助或向我指出一些文档,我们将不胜感激,谷歌搜索在这方面的搜索量并不多。

【问题讨论】:

    标签: c# database ado.net mirroring


    【解决方案1】:

    当前状态显示在sys.database_mirroring:

    SELECT mirroring_state 
    FROM sys.database_mirroring
    WHERE database_id = DB_ID('...');
    

    【讨论】:

      【解决方案2】:

      这里的MSDN Article 描述了所有系统存储过程,它们将为您提供所需的信息

      您还可以检索或更新 通过运行当前状态 sp_dbmmonitorresults 系统存储 程序。

      在 Remus 的回答中,使用 sp_dbmmonitorresults 和使用 sys.database_mirroring 表之间的一个不明显的区别是所需的权限

      sys.database_mirroring 所需的权限

      根据MSDN articleRemus引用

      查看其他数据库的行 比 master 或 tempdb,你必须要么 是数据库所有者或至少拥有 更改任何数据库或查看任何数据库 DATABASE 服务器级权限或 中的 CREATE DATABASE 权限 主数据库。看到非NULL 镜像数据库上的值,您必须 成为系统管理员的成员 已修复 服务器角色

      sp_dbmmonitorresults 所需的权限

      根据前面提到的MSDN article关于镜像SP的

      系统管理员固定服务器的成员 角色和已添加的用户 dbm_monitor 固定数据库角色

      【讨论】:

      • 谢谢,我会研究一下这个存储过程,看起来它可以节省我写一个新的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 2019-08-06
      • 2018-11-24
      相关资源
      最近更新 更多