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