Esta é a pergunta que um cliente nosso está fazendo. Por enquanto, dei uma resposta genérica de que daremos suporte a isso, mas eles devem nos fornecer um ambiente de teste.
Nosso aplicativo está usando .net e permitimos que os clientes configurem nosso serviço de servidor com o nome da instância do banco de dados e nome de usuário/senha (usamos autenticação sql-server).
Pelo que entendi, tudo o que eles precisarão fazer é configurar nosso aplicativo com o nome da instância do cluster em vez do nome do host do servidor de banco de dados. Lendo os pré- requisitos que a Microsoft fornece, parece que será completamente transparente para nós.
Isso está correto? Existem outras alterações que precisamos fazer em nossa string de conexão? Alguma outra pegadinha?
Primeiro, vamos esclarecer os termos. AlwaysOn é um termo de marketing da Microsoft que inclui grupos de disponibilidade do SQL Server e instâncias de cluster de failover do SQL Server. Você deve parar de usar o AlwaysOn e ser específico para todas as comunicações futuras.
Se você está se referindo a FCIs: a configuração deve ser totalmente transparente para seu aplicativo. Eles devem configurar a conexão com o nome da rede virtual da FCI e seu aplicativo não notará nenhuma diferença.
Se você está se referindo a AGs: Com AGs, eles têm a opção de configurar um AG Listener ou não.
Se eles não estiverem usando um ouvinte, tudo está bem e seu aplicativo não notará nenhuma diferença.
Se eles estiverem usando um ouvinte, em uma única sub-rede, é transparente.
Se eles estiverem usando um ouvinte, com várias sub-redes (vários IPs para o ouvinte), seu aplicativo precisará oferecer suporte ao parâmetro de conexão MultiSubnetFailover=TRUE ou eles precisarão modificar a propriedade RegisterAllProvidersIP do Windows. Se um deles não for usado, eles terão problemas com o DNS armazenando em cache o endereço IP errado e poderão culpar o aplicativo por não conseguir se conectar.
Consulte este artigo sobre o parâmetro MultiSubnetFailover.
Consulte este artigo sobre a propriedade RegisterAllProvidersIP.