Pergunta

Eu desenvolvo um aplicativo com componentes de cliente espesso e de cliente fino. Também em versão nosso banco de dados, de modo que as alterações do esquema resultem em seu próprio número de versão e scripts de alteração possam ser aplicados. As alterações no banco de dados, no entanto, nem sempre ocorrem em etapa com alterações de cliente espesso. Sim, a alteração do banco de dados de hoje pode adicionar uma coluna e exigir um no cliente espesso, mas a alteração do banco de dados de amanhã pode corrigir um erro em um procedimento armazenado que não requer alterações externas. Como posso codificar o cliente espesso para testar se é compatível com uma versão específica do banco de dados quando alguns são compatíveis com versões anteriores e outras não?

Durante mesmo que alguém se importa, o nosso é um aplicativo .NET integrando com o SQL Server, mas isso parece mais uma pergunta de versão do que uma pergunta da plataforma. A menos que exista uma solução específica da plataforma ...

Foi útil?

Solução

Você pode criar uma tabela, ex. Metadados com duas colunas de string e coloque uma entrada (ou mais entradas) com a versão atual do esquema. Suponho que você faça algo semelhante agora.

E divida a versão em dois números (como esquema maior/menor). Quando você muda o esquema de maneira compatível não bate-papo, você aumenta a versão principal. Após alteração compatível com versões anteriores, você apenas atualiza a versão menor.

O major é usado pelo aplicativo para verificar se é compatível com o esquema atual, e o major+minor é usado para verificar se você pode/precisa atualizar o esquema.

Eu acho que esta é a solução usada pela maioria dos aplicativos.

Outras dicas

Você poderia adotar um esquema de número de versão maior/menor?

Uma alteração no número principal implica que os clientes precisam atualizar e a alteração no número menor não.

Com qualquer um desses, os números de versão estão sempre aumentando.

Se o banco de dados souber a versão mínima do cliente necessária, e o cliente conhece a versão mínima do banco de dados necessária, é uma verificação simples para determinar o que precisa de atualização (se é que alguma coisa) - agora se você encapsula a lógica em um procedimento armazenado ou em código, essa é a sua decisão ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top