У меня простая ситуация. Крупная организация использует несколько разных версий некоторых (настольных) приложений, и каждая версия имеет собственную структуру базы данных. Есть около 200 офисов, и каждый офис будет иметь свою собственную версию, которая может быть одной из 7 разных. Компания хочет обновить все приложения до последних версий, которые будут версии 8.Сравнение и обновление SQL/Схемы
Проблема в том, что у них нет отдельной базы данных для каждой версии. У них нет отдельной базы данных для каждого офиса. У них есть одна единственная база данных, которая обрабатывается выделенным сервером, таким образом облегчая такие вещи, как управление и резервное копирование. У каждого офиса есть своя схема базы данных, и внутри схемы есть вся структура базы данных для их конкретной версии приложения. В результате я имею дело с 200 различными схемами, которые необходимо обновить, каждая из которых имеет 7 возможных версий. К счастью, каждая схема знает правильную версию, поэтому проверка версии не составляет труда.
Но моя проблема в том, что мне нужно создать сценарии обновления, которые могут обновляться с версии 1 до версии 2 до версии 3 и т. Д. В принципе, все схемы должны быть на одном уровне до тех пор, пока они не будут все версии 8 Написание кода, который будет делать это, не проблема. вызов Как создать сценарий обновления из одной версии в другую? Предпочтительно с помощью некоторого автоматизированного инструмента. Я рассмотрел SQL-сравнить RedGate и базу данных Altova DatabaseSpy, но они не практичны. Altova слишком медленная. RedGate требует слишком много обработки после этого, поскольку сгенерированный SQL-скрипт все еще имеет несколько ошибок и относится к имени схемы. Кроме того, код должен стать частью хранимой процедуры, а код, созданный RedGate, не вписывается ни в одну процедуру. (Кроме того, он делает слишком много транзакций обработки, в то время как мне нужно все в пределах одной транзакции.
я рассматривал с помощью другого инструмента SQL сравнения, но мне кажется, что мой случай слишком отличается от того, стандартные инструменты могут доставляться, поэтому я собираюсь написать свой собственный инструмент сравнения. Для этого я буду использовать ADOX с Delphi для чтения каталогов для каждой версии схемы в базе данных, а затем использовать это для написания SQL-заявлений, которые вам нужно будет обновить эту схему до следующей версии. (Сравнение 1 с 2, 2 с 3, 3 с 4 и т. д.) Я не знаком с генерацией SQL-Script-Generators, поэтому я не ожидаю слишком много проблем. И я буду обновлять структуры таблиц, а не любые другие объекты базы данных.
Итак, есть ли у кого-нибудь хорошие советы и приемы для применения при выполнении подобных сравнений? Что нужно знать? Практические советы по увеличению скорости?
Я пробовал RedGate, и это помогает мне примерно в 50% моих потребностей. Хуже того, это не позволяет мне сравнивать две схемы внутри одной базы данных. Таким образом, мне нужно сделать несколько копий базы данных, переименовать схему и затем выполнить сравнение. Это не спасает меня в любое время. –
@Workshop: Посмотрите мое обновление. – RedFilter
Ormnan, я мог бы создавать обновления от 1 до 8, от 2 до 8, от 3 до 8 и т. Д. Однако я предпочитаю создавать обновления от 1 до 2, от 2 до 3, от 3 до 4 и т. Д. Это позволяет обновлять приложение также можно сделать небольшими шагами, если один офис не сможет сразу перейти на новейшую версию. Существуют и другие организации, которые используют одно и то же приложение, хотя и не с этим большим количеством офисов, поэтому наличие сценариев, которые обновляются до следующей версии, более практичны, чем обновление до последней версии. (Потому что скоро последняя версия больше не будет последней, после создания версии 9). –