为Sitecore配置故障转移伙伴

时间:2011-09-02 07:21:27

标签: asp.net sql-server-2008 sitecore sitecore6 failover

我目前面临一个非常奇怪的问题(至少对我来说)有关Sitecore中故障转移合作伙伴配置的问题。

环境:

  • .NET Framework 3.5
  • Windows Server 2008 R2
  • IIS 7.5

这是我的连接字符串之一:

<add name="master" connectionString="user id=user;password=password;Data Source=PRIMARY_SERVER\INSTANCE,60000;Failover Partner=FAILOVER_SERVER\INSTANCE,60000;Database=Sitecore_Master" />

如您所见,我已配置故障转移合作伙伴,该合作伙伴接受与主数据库服务器相同的凭据。

如果我在操作期间停止主数据库,我将收到一个SqlException,其中包含:

 Login failed for user 'user'

除非AppPool被回收,否则任何进一步的请求都将显示相同的异常。现在,应用程序指向故障转移数据库...

应用程序不应该自行切换数据库吗?

我唯一的想法是这样的,但感觉非常非常脏,我甚至没有测试过它:

public class FailoverSqlDataProvider : SqlServerDataProvider
{
    public FailoverSqlDataProvider(string connectionString) : base(connectionString)
    { }

    protected override LanguageCollection LoadLanguages()
    {
        try
        {
            return base.LoadLanguages();
        }
        catch (Exception ex)
        {
            if (ex is SqlException)
            {
                Trace.TraceError("(FailoverSqlDataProvider) An error occured: {0}", ex.ToString());
                HttpRuntime.UnloadAppDomain();
            }

            return new LanguageCollection();
        }
    }
}

1 个答案:

答案 0 :(得分:3)

如果您使用带镜像的SQL Server,则只有在使用Witness服务器时才会自动进行故障转移,否则您必须手动处理切换。

您可以将SQL Server Express用作见证服务器,如果没有其他可用服务器,则可以从Web服务器运行它。