Настройка отказоустойчивого партнера для Sitecore

В настоящее время я сталкиваюсь с очень странной (по крайней мере, для меня) проблемой, связанной с настройкой отказоустойчивого партнера в Sitecore.

Окружающая обстановка:

  • .NET Framework 3.5
  • Windows Server 2008 R2
  • ИИС 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();
        }
    }
}

person philipproplesch    schedule 02.09.2011    source источник


Ответы (1)


Если вы используете SQL Server с зеркалированием, отработка отказа произойдет автоматически, только если вы используете сервер-свидетель, в противном случае вам придется выполнять переключение вручную.

Вы можете использовать SQL Server Express в качестве сервера-свидетеля и запускать его с веб-сервера, если нет других доступных серверов.

person Holger    schedule 05.09.2011