在C#中检查数据库镜像状态

时间:2010-11-09 22:52:03

标签: c# database ado.net mirroring

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

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

非常感谢,如果有人可以帮助或指出我的一些文档,谷歌搜索没有太多关于此。

2 个答案:

答案 0 :(得分:3)

当前状态显示在sys.database_mirroring

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

答案 1 :(得分:0)

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

  

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

使用sp_dbmmonitorresults和使用Remus的答案中的sys.database_mirroring表之间的一个非显而易见的区别是所需的权限

sys.database_mirroring

所需的权限

根据引用的MSDN article Remus

  

查看其他数据库的行   比master或tempdb,你必须要么   是数据库所有者或至少有   更改任何数据库或查看任何内容   DATABASE服务器级权限或   CREATE DATABASE权限   主数据库。要看非NULL   必须在镜像数据库上创建值   是固定的sysadmin的成员   服务器角色

sp_dbmmonitorresults

所需的权限

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

  

sysadmin固定服务器的成员   角色和已添加到的用户   dbm_monitor固定数据库角色