Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查与SQL server的联机连接,切换到脱机C#Windows应用程序_C#_Sql Server - Fatal编程技术网

检查与SQL server的联机连接,切换到脱机C#Windows应用程序

检查与SQL server的联机连接,切换到脱机C#Windows应用程序,c#,sql-server,C#,Sql Server,我正在创建一个连接到MS SQL server的C#Windows应用程序。如果连接中断,我需要能够切换到SQL Server express的本地实例。此应用程序位于一个远程区域,在那里,在线应用程序经常会出错。当连接中断时,我需要连接字符串反映到本地服务器。一旦连接恢复,我有逻辑将项目从本地数据库重新同步到活动数据库。但是,我在尝试自动测试连接时遇到问题。myapp.config中的连接字符串具有以下代码的实时和脱机连接: SqlConnection con = new SqlConnect

我正在创建一个连接到MS SQL server的C#Windows应用程序。如果连接中断,我需要能够切换到SQL Server express的本地实例。此应用程序位于一个远程区域,在那里,在线应用程序经常会出错。当连接中断时,我需要连接字符串反映到本地服务器。一旦连接恢复,我有逻辑将项目从本地数据库重新同步到活动数据库。但是,我在尝试自动测试连接时遇到问题。my
app.config
中的连接字符串具有以下代码的实时和脱机连接:

SqlConnection con = new SqlConnection(Properties.Settings.Default.MyLiveConnectionString);
如果连接中断,我希望本地连接使用:

SqlConnection con = new SqlConnection(Properties.Settings.Default.MyLocalConnectionString);
有没有人对如何无缝快速地实现这一点提出建议


我可以使用
try
/
catch
测试连接,但在继续之前需要几秒钟的超时时间。

始终使用本地连接,并让您的重新同步项逻辑完成工作。通过这种方式,您将拥有更少的用例场景,并且您不太可能遇到一些未经测试的奇怪案例。这是一个好主意。我会考虑这样做,然后每隔一分钟左右自动上传一些流程。始终使用本地流程,让您的重新同步项逻辑完成工作。通过这种方式,您将拥有更少的用例场景,并且您不太可能遇到一些未经测试的奇怪案例。这是一个好主意。我会考虑这样做,然后有一些自动过程上传每分钟左右。谢谢。。。我会查出来的。谢谢。。。我去看看。
public void Connect()
{
    string connectionStr = string.Empty;
    try
    {
        if(CheckConnection(Properties.Settings.Default.MyLiveConnectionString))
            connectionStr = Properties.Settings.Default.MyLiveConnectionString;
    }
    catch (Exception ex)
    {
        //Log this, etc...
    }

    if (string.IsNullOrWhiteSpace(connectionStr))
        connectionStr = Properties.Settings.Default.MyLocalConnectionString;

    using (SqlConnection conn = new SqlConnection(connectionStr))
    {

    }
}

private static bool CheckConnection(string connectionString)
{
    using (SqlConnection con = new SqlConnection(connectionString))
    {

        SqlCommand cmd = new SqlCommand("SELECT 1", conn);
        conn.Open();
        if ((int)cmd.ExecuteScalar() == 1)
            return true;
    }

    return false;
}