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

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


相关推荐

  • 三条平行线与等边三角形

    三条平行线与等边三角形偶然在网上看到一道有意思的几何题,仔细思考了一下,确实有点趣。原题是:平面上有任意三条平行线,使用尺规则作图画出一个等边三角形,使三角形的三个顶点分别在三条平行线上。画法有好多种,搜集网上的一些画法,先介绍4种,再讨论一下三角形连长与平等线距离的关系,最后讨论下第二种画法的变化(三角形边长的唯一性未证明)。第一种:作图顺序:(颜色顺序:红—>绿—>蓝—>紫)1.在三条…

    2022年9月20日
    2
  • vue解决跨域的几种办法_前端跨域方法之cors

    vue解决跨域的几种办法_前端跨域方法之corsVUE跨域、常用解决跨域的方法

    2022年10月1日
    3
  • 软件测试外包公司有哪些_工程资料外包的坏处

    软件测试外包公司有哪些_工程资料外包的坏处一、前言:什么是软件测试外包随着最近10年创业风气的发起,已经涌起创业项目外包公司的兴起,已经不仅仅局限为了降低成本,更多的是为了解决自己雇佣技术人员或者无法管理技术人员的难题。那么外包是什么意思呢?似乎大家对外包都闻之色变!这里我们详细的认识一下什么是外包?外包类似中介派遣公司或者叫做劳务输出公司。就是我们公司把你招聘进来,但是又把你派到其他公司(甲方)工作。但是最终你的劳务合同…

    2025年7月28日
    2
  • vs 序列号密钥「建议收藏」

    vs 序列号密钥「建议收藏」2003序列号: D64GG-GXY6T-V6FTR-WCPBB-2YDYB T7KXG-78HXC-JYRF8-72VH2-6DM7M2005序列号: KGR3T-F2C26-RRTGT-D6DQT-QBBB32008序列号: XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT WPX3J-BXC3W-BPYWP-PJ8CM-F7M8T2013序列号: BWG7X-J98B3-W34RT-33B3R-JVYW92015序列号:专业版:HMGNV-WCYXV-X7G9W-YCX6

    2022年5月24日
    62
  • 计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会事半功倍!「建议收藏」

    计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会事半功倍!「建议收藏」各位学弟学妹们好,作为稍微年长的我(岁月是把杀猪刀啊),今天就给大家补补课。在大学里的,我们上的计算机专业课程一般都是像操作系统、编译原理、计算机组成原理、计算机网络这些理论课程,还有一些像C语言、Java、.Net这些可以实践的课程,甚至还有可能让你焊一个收音机,但是对于一些基本习惯却很容易被忽略,需要学弟学妹们自行摸索。实际上,一些好的基本习惯是时时刻刻在影响着我们自己的,不仅是在学校的学习生活中,还是在毕业后的工作生活中。今天我要给大家说就是,使用键盘的习惯。有的同学可能会诧异,键盘谁不会用啊,

    2022年7月16日
    25
  • notepad正则删除关键词所在行

    notepad正则删除关键词所在行

    2021年7月19日
    80

发表回复

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

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