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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 汇编语言系列教程之基础入门 (一)「建议收藏」

    汇编语言系列教程之基础入门 (一)「建议收藏」机器字长机器字长是指CPU一次运算所能处理的数据的位数,一般来说这个数的和CPU的通用寄存器长度、数据总线的宽度等相等,在8086中为16bit。由于历史原因,x86系列的CPU生产较早,所以这一系

    2022年8月5日
    7
  • 菲尼克斯FL SWITCH SFN 16TX多端口交换机

    菲尼克斯FL SWITCH SFN 16TX多端口交换机菲尼克斯FLSWITCHSFN16TX多端口交换机2891933可提供标准温度(0°C…60°C)和宽温(-40°C…75°C)型号的设备窄型金属壳体上有16个端口,带冗余输入电压自适应与自交叉检测简化了安装和设置电缆安全锁定备选本地诊断指示,带LEDRJ45端口的传输速率为10/100Mbps,光纤端口的传输速率为100Mbps尺寸宽度70mm高度135mm深度110mm环境条件保护等级IP20环境温度(运行)0°C…60°C环境温度(

    2022年6月22日
    27
  • Nginx负载均衡算法分析[通俗易懂]

    Nginx负载均衡算法分析[通俗易懂]随着互联网信息的爆炸性增长,负载均衡(loadbalance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲(如F5BIG-IP、CitrixNetScaler、Radware等等,虽然可以解决问题

    2022年10月12日
    2
  • jenkins 邮件_邮件发送服务

    jenkins 邮件_邮件发送服务前言前面已经实现在jenkins上展示html的测试报告,接下来只差最后一步,把报告发给你的领导,展示你的劳动成果了。安装EmailExtensionPlugin插件jenkins首页-

    2022年7月30日
    8
  • 视频行为识别检测综述 IDT TSN CNN-LSTM C3D CDC R-C3D

    视频行为识别检测综述 IDT TSN CNN-LSTM C3D CDC R-C3D本文github地址VideoAnalysis之ActionRecognition(行为识别)行为识别就是对时域预先分割好的序列判定其所属行为动作的类型,即“读懂行为”。[行为检测|论文解读]行为检测调研综述较新基于DeepLearning的视频识别技术科研成果—-中国科学院深圳先进技术研究院面向人体姿态行为理解的深度学习方法CVPR2014Tut…

    2022年6月21日
    26
  • Debian下安装3322动态域名更新程序

    Debian下安装3322动态域名更新程序Ez ipupdate 是一个动态域名更新程序 可以更新希网的动态域名 对于动态域名 DYNDNS service type 参数应该选择 qdns 对于静态域名 STATDNS service type 参数应该选择 qdns static 安装和使用方法 将 ez ipupdate 拷贝到 usr local bin 目录 Ez ipupdate 可以运行在以下两种方式 命

    2025年6月18日
    2

发表回复

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

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