Как ваш толстый клиент проверяет совместимость со схемой базы данных? - PullRequest
3 голосов
/ 26 января 2010

Я разрабатываю приложение с использованием компонентов как для толстых, так и для тонких клиентов. Мы также делаем версию нашей базы данных таким образом, чтобы изменения схемы приводили к их собственному номеру версии и могли применяться сценарии изменения. Изменения базы данных, однако, не всегда происходят в ногу с изменениями толстого клиента. Да, сегодняшнее изменение базы данных может добавить столбец и вызвать необходимость в толстом клиенте, но завтрашнее изменение базы данных может исправить ошибку в хранимой процедуре, которая не требует каких-либо внешних изменений. Как я могу написать толстый клиент, чтобы проверить, совместим ли он с конкретной версией базы данных, если некоторые обратно совместимы, а некоторые нет?

Даже если кому-то все равно, наше приложение .NET интегрируется с SQL Server, но это скорее вопрос версии, чем вопрос платформы. Если нет решения для конкретной платформы ...

Ответы [ 3 ]

3 голосов
/ 26 января 2010

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

И разделить версию на два числа (как мажорная / минорная схема). Когда вы изменяете схему без обратной совместимости, вы увеличиваете основную версию. После обратной совместимости вы просто обновляете минорную версию.

Major используется приложением для проверки совместимости с текущей схемой, а major + minor используется для проверки возможности / необходимости обновления схемы.

Я думаю, что это решение используется большинством приложений.

0 голосов
/ 26 января 2010

С любым из них номера версий всегда увеличиваются.

Если база данных знает минимальную версию клиента, которая ему требуется, а клиент знает минимальную версию базы данных, которая ему требуется, это простая проверка, чтобы определить, что нужно обновить (если что-нибудь) - теперь, если вы инкапсулируете логику в хранимую процедуру или в коде, это ваше решение ...

0 голосов
/ 26 января 2010

Не могли бы вы принять схему номеров старших / младших версий?

Изменение основного номера подразумевает, что клиенты нуждаются в обновлении, а изменение младшего номера - нет.

...