executescalar mysql_ExecuteScalar[通俗易懂]

executescalar mysql_ExecuteScalar[通俗易懂]这两个答案和一点点思考使我想到了一个接近答案的东西。首先再澄清一下:该应用程序是用C#(2.0+)编写的,并使用ADO.NET与SQLServer2005进行通信。镜像设置是托管主体和镜像的两个W2k3服务器以及托管作为监视器的快速实例的第三个服务器。这样做的好处是,故障转移对于使用数据库的应用程序几乎是透明的,它将对某些连接引发错误,但从根本上讲一切都会很好地进行。是的,我们得到了奇怪的误报…

大家好,又见面了,我是你们的朋友全栈君。

这两个答案和一点点思考使我想到了一个接近答案的东西。

首先再澄清一下:

该应用程序是用C#(2.0+)编写的,并使用ADO.NET与SQL Server 2005进行通信。镜像设置是托管主体和镜像的两个W2k3服务器以及托管作为监视器的快速实例的第三个服务器。这样做的好处是,故障转移对于使用数据库的应用程序几乎是透明的,它将对某些连接引发错误,但从根本上讲一切都会很好地进行。是的,我们得到了奇怪的误报,但总的来说是让系统以最少的麻烦进行工作,而镜像确实很好地实现了这一点。

此外,问题不在于严重的服务器故障-通常更明显,但由于其他原因(参考上述错误肯定)会进行故障转移,因为由于多种原因,我们确实有几项无法进行故障转移无论如何,我们可以看看是否可以识别出误报的情况。

因此,鉴于以上所述,仅检查框的状态还不够,并且追逐事件日志可能过于复杂-事实证明,答案非常简单:sp_helpserver

sp_helpserver返回的第一列是服务器名称。如果您定期运行请求,并保存前一个服务器名称并每次进行比较,则可以确定何时进行了更改,然后采取适当的措施。

以下是一个演示控制台原理的控制台应用程序-尽管它需要做一些工作(例如,每次连接都应该是非池化的,并且每次都是新连接),但目前已经足够了(因此,我将其作为“答案”) )。参数是Principal,Mirror,Database

using System;

using System.Data.SqlClient;

namespace FailoverMonitorConcept

{

class Program

{

static void Main(string[] args)

{

string server = args[0];

string failover = args[1];

string database = args[2];

string connStr = string.Format(“Integrated Security=SSPI;Persist Security Info=True;Data Source={0};Failover Partner={1};Packet Size=4096;Initial Catalog={2}”, server, failover, database);

string sql = “EXEC sp_helpserver”;

SqlConnection dc = new SqlConnection(connStr);

SqlCommand cmd = new SqlCommand(sql, dc);

Console.WriteLine(“Connection string: ” + connStr);

Console.WriteLine(“Press any key to test, press q to quit”);

string priorServerName = “”;

char key = ‘ ‘;

while(key.ToString().ToLower() != “q”)

{

dc.Open();

try

{

string serverName = cmd.ExecuteScalar() as string;

Console.WriteLine(DateTime.Now.ToLongTimeString() + ” – Server name: ” + serverName);

if (priorServerName == “”)

{

priorServerName = serverName;

}

else if (priorServerName != serverName)

{

Console.WriteLine(“***** SERVER CHANGED *****”);

Console.WriteLine(“New server: ” + serverName);

priorServerName = serverName;

}

}

catch (System.Data.SqlClient.SqlException ex)

{

Console.WriteLine(“Error: ” + ex.ToString());

}

finally

{

dc.Close();

}

key = Console.ReadKey(true).KeyChar;

}

Console.WriteLine(“Finis!”);

}

}

}

如果没有a)提出问题,然后b)得到使我真正想到的答案,我就不会到达这里

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147336.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navaicat 15 for mysql 激活码【在线破解激活】[通俗易懂]

    navaicat 15 for mysql 激活码【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    48
  • Java数据类型—StringBuilder与StringBuffer「建议收藏」

    Java数据类型—StringBuilder与StringBuffer「建议收藏」StringBuilder与StringBuffer作用就是用来处理字符串,但String类本身也具备很多方法可以用来处理字符串,那么为什么还要引入这两个类呢?前面我们讲解到String对象的不可变性,以及它的不足那就是创建新的对象,因为它是不可变的,所以你对它的操作逻辑就体现在另外一个对象里,那就是你的操作新创建的对象。…

    2022年6月28日
    24
  • 理解Go语言的nil[通俗易懂]

    理解Go语言的nil[通俗易懂]   转载地址:https://studygolang.com/articles/9506   最近在油管上面看了一个视频:Understandingnil,挺有意思,这篇文章就对视频做一个归纳总结,代码示例都是来自于视频。nil是什么相信写过Golang的程序员对下面一段代码是非常非常熟悉的了:iferr!=nil{//dosomething…

    2025年5月26日
    1
  • 计算机类单位换算,计算机单位换算大全「建议收藏」

    计算机类单位换算,计算机单位换算大全「建议收藏」电脑世界是由0与1组成,其中有数以万计的线路,一条线路传递一个信号,而0代表没有信号,1代表有信号,就像电源开关一样,同一时间只可能有一种状态,所以电脑最基本的单位就是一条线路的信号,我们就把它称作“位”,英文叫做bit,缩写为b。“位”和“字节”其实都是电脑的计量单位,我们可以理解成字节是由位组成的,一个“字节”等于8“位”,Byte是它的缩写.位(bit)这个单位太小,所以字节(Byte)是…

    2022年7月27日
    1
  • 关于group by的用法 原理

    关于group by的用法 原理写在前面的话:用了好久groupby,今天早上一觉醒来,突然感觉groupby好陌生,总有个筋别不过来,为什么不能够select*fromTablegroupbyid,为什么一定不能是*,而是某一个列或者某个列的聚合函数,groupby多个字段可以怎么去很好的理解呢?不过最后还是转过来了,简单写写吧,大牛们直接略过吧。=========正文开始===========  …

    2022年5月9日
    66
  • 分析如何用万能表测试MOS管好坏的小窍门

    分析如何用万能表测试MOS管好坏的小窍门   现在家电、照明、汽车电子等领域行业开关管均采用性能优异的MOS管取代过去的大功率晶体三极管,使整体的效率、可靠性、故障率均大幅的下降。       虽说是大幅降低,但也会出现损坏的情况,由于MOS管和大功率晶体三极管在结构、特性有着本质上的区别,在应用上驱动电路也比晶体三极管复杂,致使维修人员对电路、故障的分析倍感困难。怎么对MOS管进行检测呢?一起来了解下  MOS…

    2022年6月17日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号