我们的C#应用程序需要连接到SQL 2005和2008数据库,并检查数据库镜像的当前状态(例如,启用,暂停,暂停,断开连接等)。我可以查看这些属性吗?
我们所有镜像的数据库都没有见证和手动故障转移(同步镜像)。
非常感谢,如果有人可以帮助或指出我的一些文档,谷歌搜索没有太多关于此。
答案 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表之间的一个非显而易见的区别是所需的权限
根据引用的MSDN article Remus
查看其他数据库的行 比master或tempdb,你必须要么 是数据库所有者或至少有 更改任何数据库或查看任何内容 DATABASE服务器级权限或 CREATE DATABASE权限 主数据库。要看非NULL 必须在镜像数据库上创建值 是固定的sysadmin的成员 服务器角色
根据前面提到的MSDN article镜像SP的
sysadmin固定服务器的成员 角色和已添加到的用户 dbm_monitor固定数据库角色