2011-09-02 33 views
3

我目前正在面对Sitecore中配置故障转移合作伙伴的一个非常奇怪的问题(至少对我而言)。为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" /> 

由于你可以看到,我配置了一个故障转移伙伴,它接受与主数据库服务器相同的凭据。

如果我停止运转时的主数据库,I'll接收SQLEXCEPTION它说:

Login failed for user 'user' 

任何进一步的请求将显示相同的异常,除非程序池再循环。现在应用程序指向故障转移数据库...

不应该切换数据库本身吗?

我唯一的想法是这样的事情,但感觉非常,非常肮脏,我甚至haven't测试它:

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(); 
     } 
    } 
} 

回答

3

如果您使用的是带有镜像SQL Server中,故障转移只能将就如果您正在使用Witness服务器,则会自动发生,否则您必须手动处理切换。

您可以使用SQL Server Express作为见证服务器,并且如果没有其他可用的服务器,可以从网络服务器运行它。