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

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


相关推荐

  • QUOTEName用法[通俗易懂]

    QUOTEName用法[通俗易懂]  1.可以用在拼接字符串时候将参数名称替换为参数值到SQL里面,如下面代码:DECLARE@TableNameVARCHAR(50),@SqlNVARCHAR(MAX),@DJIDINT;SET@TableName=’DJ’;SET@DJID=1991906354;SET@sql=’SELECT*FROM’+QUOTENAME(…

    2022年7月25日
  • Vue全家桶介绍_vue全家桶有什么好处

    Vue全家桶介绍_vue全家桶有什么好处全家桶:顾名思义。对于一个完整的中大型单页面应用项目所必须的插件和框架。一、vue-clivue-cli也叫脚手架,官方定义为Vue.js开发的标准工具!相比script标签引入1)、功能丰富对Babel、TypeScript、ESLint、PostCSS、PWA、单元测试和End-to-end测试提供开箱即用的支持。2)、易于扩展它的插件系统可以让社区根据常见需求构建和共享可复用的解决方案。3)、无需EjectVueCLI完全是可配置的,无需eject。这样你的项目就可以长

    2022年10月31日
  • pycharm设置国内清华源[通俗易懂]

    pycharm设置国内清华源[通俗易懂]1.安装的pycharm默认是国外的源2.想设置为国内的清华源很简单:1)第一步:Ctrl+Alt+s打开settings。2)找到project下的PythonInterpreter。3)点击+号。4)点击下方的ManageRepositories。5)点击+号。6)在弹出的输入框内输入清华源地址:SimpleIndex。7)点击OK按钮,并选中原来的源地址,点击-号删除,最后点击OK按钮。8)点击刷新按钮就可…

    2022年8月29日
  • windows安装 wget

    windows安装 wget下载wget的zip包:https://eternallybored.org/misc/wget/有时好使有时不好使,多试几遍就可以下载完成之后放到windows/system32目录底下打开cmd,输入wget-V可以看到wget安装成功wget命令格式详解:  wget[参数列表][目标软件、网页的网址]  -o,–output-file=FILE将软件输出信息保存到文件  -a,–append-output=FILE将软件输出信息追加到文件  -d,–debug显示输出信息

    2022年10月16日
  • 【SpringBoot】19、SpringBoot中实现启动任务

    【SpringBoot】19、SpringBoot中实现启动任务我们在项目中会用到项目启动任务,即项目在启动的时候需要做的一些事,例如:数据初始化、获取第三方数据等等,那么如何在SpringBoot中实现启动任务,一起来看看吧SpringBoot中提供了两种项目启动方案,CommandLineRunner和ApplicationRunner一、CommandLineRunner使用CommandLineRunner,需要自定义一个类区实现CommandLineRunner接口,例如:importorg.springframework.boot.

    2022年9月26日
  • 数组乘法(大整数相乘)

    数组乘法(大整数相乘)

    2021年6月6日

发表回复

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

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