开发者

Checking database mirroring status in C#

Our C# application needs to connect to SQL 2005 and 2008 databases and check what the current status of database mirroring is (eg. is it enabled, suspended, p开发者_高级运维aused, disconnected etc). Are there properties where I can check this?

All our databases that are being mirrored have no witness and manual failover (synchronous mirroring).

Much appreciated if anyone can help out or point me to some documentation, google searches are not turning up much on this.


Current state is shown in sys.database_mirroring:

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


The MSDN Article here describes all the System Stored procedures that will give you the information you need

You can also retrieve or update the current status by running the sp_dbmmonitorresults system stored procedure.

One non-obvious difference between using the sp_dbmmonitorresults and using sys.database_mirroring table that's in Remus's answer is the permissions required

Rights needed for sys.database_mirroring

According to the MSDN article Remus referenced

To see the row for a database other than master or tempdb, you must either be the database owner or have at least ALTER ANY DATABASE or VIEW ANY DATABASE server-level permission or CREATE DATABASE permission in the master database. To see non-NULL values on a mirror database, you must be a member of the sysadmin fixed server role

Rights needed for sp_dbmmonitorresults

According to the previous mentioned MSDN article on mirroring SP's

members of the sysadmin fixed server role, and users who have been added to the dbm_monitor fixed database role

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜