当另一个sql server关闭时从可用的sql server检索数据

时间:2013-12-04 03:18:26

标签: c# asp.net sql sql-server-2008

我正在使用c#在asp.net中创建一个项目,其中我使用了两个SQL服务器。两台服务器都具有相同的数据。我希望我的应用程序在一台服务器出现故障时从另一台服务器检索数据。我们可以在asp.net中测试服务器连接或服务器可用性吗?提前致谢。

2 个答案:

答案 0 :(得分:3)

这是在代码中执行此操作的一种方法。 您不需要测试可用性(如果它说“是”然后发生故障怎么办?)

您所做的是运行查询,如果失败则检查错误类型,并在需要时重复另一台服务器。

你做了一个包装功能就完成了。

答案 1 :(得分:0)

我假设您正在使用实体框架。

我在测试数据库连接时遇到了类似的问题。 我写了这个函数来验证连接字符串。

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,则可以尝试使用第二个。