我有一个数据库,其中一个镜像处于高安全模式(目前使用见证服务器,但计划将他带出),此数据库将用于存储由c#程序收集的数据。
我想知道如何在程序中检查所有SQL实例的状态并导致/强制手动故障转移。
是否有任何c#API可以帮助我解决这个问题?
信息我正在使用sql server 2008
编辑:我知道我可以查询sys.database_mirroring但是为此我需要主数据库启动并运行,我想联系每个sql实例并检查它们的状态。
答案 0 :(得分:2)
使用SQL Server Management Objects (SMO)。
SQL Server管理对象(SMO)是一组对象,用于编程管理Microsoft SQL Server的所有方面。 SQL Server复制管理对象(RMO)是一组封装SQL Server复制管理的对象。
我之前在托管应用程序中使用过SMO - 是一种享受。
要查找实例的状态,请使用Server
对象 - 具有State
和Status
属性。
答案 1 :(得分:0)
using Microsoft.SqlServer.Management.Smo.Wmi;
ManagedComputer mc = new ManagedComputer("localhost");
foreach (Service svc in mc.Services) {
if (svc.Name == "MSSQL$SQLEXPRESS"){
textSTW.Text = svc.ServiceState.ToString();
}
if (svc.Name == "MSSQL$TESTSERVER"){
textST1.Text = svc.ServiceState.ToString();
}
if (svc.Name == "MSSQL$TESTSERVER3") {
textST2.Text = svc.ServiceState.ToString();
}
}
这样我只是在寻找服务的状态(Running / Stoped)并且速度更快,我错过了什么?