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/147328.html原文链接:https://javaforall.net

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


相关推荐

  • 表白生成器PHP源码,表白网页在线生成源码[通俗易懂]

    表白生成器PHP源码,表白网页在线生成源码[通俗易懂]在520这个节日里面,很多人都开始了表白计划,对于那些不敢说出口的问题,就直接来此下载520表白网页一键生成软件,帮助你们直接生成最棒的表白页面,让你们增加成功的机会。520表白网页一键生成软件简介如果你喜欢她不能亲自向她说不如做个网页,把自己想说的话写进去,然后发个地址给她,里面添加她喜欢的音乐或者mv。不会做网页怎么办,没事。表白网页生成器帮助你!无需任何编程。一键生成,然后把生成在桌面的i…

    2022年5月21日
    35
  • VMware12安装_vmwarewin10安装

    VMware12安装_vmwarewin10安装vmware10安装fedora1232位安装这个链接安装可行https://blog.csdn.net/Babsir/article/details/78014042

    2022年9月16日
    0
  • Python安装教程(新手)

    Python安装教程(新手)       第一次接触Python,可能是爬虫或者是信息AI开发的小朋友,都说Python语言简单,那么多学一些总是有好处的,下面从一个完全不懂的Python的小白来安装Python等一系列工作的记录,并且遇到的问题也会写出,让完全不懂的小白也可上手安装,并且完成第一个Helloworld代码。[Python安装]进入Python的官方下载页面http://www.python.org/download/出现很

    2022年4月30日
    37
  • poj 2762 Going from u to v or from v to u? (推断它是否是一个薄弱环节图)

    poj 2762 Going from u to v or from v to u? (推断它是否是一个薄弱环节图)

    2022年1月4日
    37
  • eruda.js 移动端调试神器使用教程(eruda)

    eruda.js 移动端调试神器使用教程(eruda)在日常的移动端开发时,一般都是试用chrome浏览器的移动端模式进行开发和调试,只有在chrome调试完成,没有问题了才会上到真机测试,移动端开发的一大问题就在于此,各种品牌各种型号手机,手机中各种类型的浏览器APP…还好移动端的相对一致点,但是往往都会有一些各种各样的坑,这时候就蛋疼了,明明chrome调试工具中是正常的,一到某个浏览器中就炸了,怎么办,又无法像在chrome中使用调试工具进行调试,只能通过alert()弹窗来调试,有什么办法可以像PC上那样清晰,可视化的调试呢?使用示例://#

    2022年10月26日
    0
  • linux卸载mysql(完全卸载)[通俗易懂]

    linux卸载mysql(完全卸载)[通俗易懂]//rpm包安装方式卸载查包名:rpm-qa|grep-imysql删除命令:rpm-e–nodeps包名//yum安装方式下载1.查看已安装的mysql命令:rpm-qa|grep-imysql2.卸载mysql命令:yumremovemysql-community-server-5.6.36-2.el7.x86_64查看mysql的其它依赖:rpm…

    2022年6月29日
    25

发表回复

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

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