C# 当另一台sql server关闭时,从可用的sql server检索数据
我正在使用c#在asp.net中制作一个项目,其中我使用了两台SQL Server。两台服务器具有相同的数据。如果一台服务器宕机,我希望我的应用程序从另一台服务器检索数据。asp.net中是否有任何方法可以用来测试服务器连接性或服务器可用性?提前谢谢 这是用代码实现的一种方法。 您不需要测试可用性(如果它说“是”,然后下降怎么办?) 您要做的是运行查询,如果查询失败,则检查错误类型,并在需要时对另一台服务器重复C# 当另一台sql server关闭时,从可用的sql server检索数据,c#,asp.net,sql,sql-server-2008,C#,Asp.net,Sql,Sql Server 2008,我正在使用c#在asp.net中制作一个项目,其中我使用了两台SQL Server。两台服务器具有相同的数据。如果一台服务器宕机,我希望我的应用程序从另一台服务器检索数据。asp.net中是否有任何方法可以用来测试服务器连接性或服务器可用性?提前谢谢 这是用代码实现的一种方法。 您不需要测试可用性(如果它说“是”,然后下降怎么办?) 您要做的是运行查询,如果查询失败,则检查错误类型,并在需要时对另一台服务器重复 你做了一个包装函数就完成了。我假设你使用的是实体框架 我在测试数据库连接时遇到了类似
你做了一个包装函数就完成了。我假设你使用的是实体框架 我在测试数据库连接时遇到了类似的问题。 我编写这个函数是为了验证连接字符串
public enum DBConnectionStatus
{
CONNECTION_ERROR,
AUTHENTICATION_ERROR,
INVALID_DATABASE,
UNKNOWN_ERROR,
OK,
};
public static DBConnectionStatus ValidateConnection(string ConnectionString)
{
DBConnectionStatus result = DBConnectionStatus.UNKNOWN_ERROR;
DataContext DB = new DataContext(ConnectionString);
try
{
DB.Connection.Open();
}
catch (SqlException ex)
{
switch (ex.Number)
{
case -1:
case 2: //Cant reach data source (not accessable or offline)
result = DBConnectionStatus.CONNECTION_ERROR;
break;
case 4060:
result = DBConnectionStatus.INVALID_DATABASE;
break;
case 18452:
case 18456: //Invalid Authentication
result = DBConnectionStatus.AUTHENTICATION_ERROR;
break;
default: //All other errors
result = DBConnectionStatus.UNKNOWN_ERROR;
break;
}
}
finally
{
if (DB.Connection.State == ConnectionState.Open)
{
DB.Connection.Close();
}
}
return result;
}
您可以测试与主数据库的连接,如果响应为connection_ERROR,则可以尝试使用第二个数据库 如果您试图在客户端实现故障切换,请使用。如果在SQL Server端实现集群,则不必在应用程序中构建所有故障切换逻辑。