Как я могу обновить схему базы данных SQL Server?

Обычно во время разработки проекта я часто развертываюсь, просто чтобы убедиться, что у меня не будет проблем с производством.

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

Как я могу легко обновить базу данных в процессе производства?

Я отбрасываю старую базу данных и снова подключаю новую. Есть ли более быстрый способ обновления базы данных развертывания?

Спасибо

ИЗМЕНИТЬ

Каковы некоторые бесплатные инструменты для этого?

Ответ 1

Мастер создания скриптов выполнил именно то, что мне нужно.

Ответ 2

Ведите список всех сценариев изменений, которые вы применяете к своей базе данных dev, и применяйте их к базе данных Production при развертывании.

В качестве альтернативы используйте сторонний инструмент, который может сравнивать две схемы и предоставить сценарий изменений, который вы затем можете запустить.

Ответ 3

Я пытаюсь использовать такие инструменты, как RedGate SQL Compare, который покажет вам "diff" между двумя версиями и фактически script из компонентов, которые разные. Вы также можете привыкнуть к script всем вашим изменениям базы данных, чтобы у вас был проверочный след изменений, которые вы сделали, и можете применять их программным способом, когда вы готовы к развертыванию.

Ответ 4

Лучше всего реализовать свои изменения как набор скриптов diff. Поэтому вместо того, чтобы отбрасывать таблицу и воссоздавать ее, вы script равны ALTER TABLE.

Есть также инструменты, которые помогут вам в этом. Если вы сохраните копию оригинала и новой базы данных, вы можете запустить инструмент против двух, которые будут генерировать SQL, который приведет вас от одной версии к другой.

Ответ 5

Мне лично нравится обновлять полные сценарии создания, а также поддерживать обновление script, всякий раз, когда я меняю схему для конкретной версии. Я использовал Red Gate SQL Compare, и это очень хороший инструмент, но предпочитаем поддерживать сценарии.

Ответ 6

Всегда записывайте script, чтобы внести изменения в схему. Поместите script в папку рассылки, чтобы при изменении ваших изменений скрипты выполнялись для изменения каждой среды.

Ответ 7

Migrator Dot Net - отличный инструмент для управления версиями вашей базы данных. Трудно вернуться к ручному отслеживанию сценариев и выполнению сравнения баз данных после того, как вы использовали миграции.

Ответ 8

Visual Studio Database Edition неплохо работает в этом. Он хранит всю вашу схему в исходных сценариях под контролем источника вместе с остальной частью вашего кода. Он может анализировать вашу схему для зависимостей при внесении изменений. Он может проводить анализ лучших практик. И он может генерировать файл .dbschema, который может использоваться средством развертывания для обновления вашей базы данных до текущей схемы.

Фактически вы можете автоматизировать это с непрерывной интеграцией и строить капли прямо для тестовой среды, промежуточной среды и даже производственной среды. Это означает, что когда вы входите в тестовую ветку, строительная машина будет создавать продукт, запускать тесты проверки сборки и разворачивать его на вашем сервере разработки. Когда вы меняете интеграцию из ветки теста в основную ветвь, строительная машина создает продукт, запускает BVT, а развертывания - на вашем тестовом/приемном сервере. И когда вы интегрируетесь в ветвь выпуска, сборщик будет строить, тестировать и, наконец, развертывать на производстве. Теперь верно, что не многие организации готовы пойти так далеко и позволить автоматическому процессу создания непрерывного развертывания автоматически запускаться на живых серверных серверах, и я считаю, что это радикальное мышление. Но я говорю, что вам следует больше доверять автоматическим BVT и автоматическим процессам, чем любые ручные тесты и развертывание.

Ответ 9

Попробуйте DBSourceTools.
http://dbsourcetools.codeplex.com
Его открытый источник и script полная база данных
- таблицы, представления, procs и данные на диск, а затем разрешить вам воссоздать эту базу данных с помощью цели развертывания.
Он специально разработан, чтобы помочь разработчикам получить свои базы данных под контролем исходного кода.