Conectando-se ao banco de dados recém-criado após o erro de conexão anterior

Meu aplicativo está se conectando periodicamente ao MyDatabase e realizando uma consulta.

Eu preciso lidar com o caso em que o banco de dados MyDatabase ainda não existe e precisa ser criado. O que estou fazendo atualmente é cada vez que eu primeiro me conecto ao banco de dados mestre e executo algo assim:

SELECT * FROM sysdatabases WHERE NAME='MyDatabase'

para determinar se MyDatabase existe. Se não criar, prossiga conectando-se ao MyDatabase e executando a consulta.

Abrir uma conexão separada para o banco de dados mestre e executar uma consulta toda vez parece desnecessário (mesmo que as conexões estejam em pool). Por que não posso simplesmente conectar-me ao MyDatabase imediatamente? 99% do tempo será bem sucedido e eu posso executar as consultas. O 1% de vezes que ele falha eu posso detectar MyDatabase está faltando e criá-lo nesse ponto certo?

Mas quando eu tento isso, eu vejo um problema. Se eu tentar conectar-me ao MyDatabase e ele não existir, recebo um SqlException

Não é possível abrir o banco de dados MyDatabase solicitado pelo login. O login falhou.

Bem. Ótimo. Eu posso pegar qualquer SqlException e, em seguida, ir para o banco de dados mestre para determinar MyDatabase não existe e criá-lo.

Mas depois de criá-lo, quando eu agora tento me conectar ao MyDatabase Iimediatamente obtenha o mesmo erro:

Não é possível abrir o banco de dados MyDatabase solicitado pelo login. O login falhou.

Parece que não está tentando se conectar novamente e, em vez disso, está retornando um resultado em cache. Se eu esperar 10 segundos após criar o banco de dados antes de tentar se conectar a ele, a conexão será bem-sucedida.

Minha pergunta é: esse cache é esperado (acho que sim) e, mais importante, há uma prática recomendada para lidar com essa situação? Existe talvez uma configuração de liberação de cache ou tempo limite na API SqlConnection que eu possa usar? Eu poderia implementar meu próprio atraso de tempo limite, mas gostaria de saber que não há um método melhor que esteja faltando.

questionAnswers(1)

yourAnswerToTheQuestion