【发布时间】:2010-11-09 22:52:03
【问题描述】:
我们的 C# 应用程序需要连接到 SQL 2005 和 2008 数据库并检查数据库镜像的当前状态(例如,是否启用、暂停、暂停、断开等)。有没有可以检查的属性?
我们所有被镜像的数据库都没有见证和手动故障转移(同步镜像)。
如果有人可以提供帮助或向我指出一些文档,我们将不胜感激,谷歌搜索在这方面的搜索量并不多。
【问题讨论】:
标签: c# database ado.net mirroring
我们的 C# 应用程序需要连接到 SQL 2005 和 2008 数据库并检查数据库镜像的当前状态(例如,是否启用、暂停、暂停、断开等)。有没有可以检查的属性?
我们所有被镜像的数据库都没有见证和手动故障转移(同步镜像)。
如果有人可以提供帮助或向我指出一些文档,我们将不胜感激,谷歌搜索在这方面的搜索量并不多。
【问题讨论】:
标签: c# database ado.net mirroring
当前状态显示在sys.database_mirroring:
SELECT mirroring_state
FROM sys.database_mirroring
WHERE database_id = DB_ID('...');
【讨论】:
这里的MSDN Article 描述了所有系统存储过程,它们将为您提供所需的信息
您还可以检索或更新 通过运行当前状态 sp_dbmmonitorresults 系统存储 程序。
在 Remus 的回答中,使用 sp_dbmmonitorresults 和使用 sys.database_mirroring 表之间的一个不明显的区别是所需的权限
根据MSDN articleRemus引用
查看其他数据库的行 比 master 或 tempdb,你必须要么 是数据库所有者或至少拥有 更改任何数据库或查看任何数据库 DATABASE 服务器级权限或 中的 CREATE DATABASE 权限 主数据库。看到非NULL 镜像数据库上的值,您必须 成为系统管理员的成员 已修复 服务器角色
根据前面提到的MSDN article关于镜像SP的
系统管理员固定服务器的成员 角色和已添加的用户 dbm_monitor 固定数据库角色
【讨论】: