Как обновить схему базы данных без удаления таблиц - PullRequest
2 голосов
/ 19 сентября 2011

Для обновления существующей базы данных мы включаем файл sql обновлений, который запускает установщик. Он проверяет, существует ли таблица, а если нет, то создает ее и поля. Это автоматически сгенерированный файл из некоторых функций nHibernate.

IF NOT EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[TableA]') 
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
create table

Это прекрасно работает для создания новой базы данных, но во время разработки, когда содержимое таблиц меняется, это означает, что отдел тестирования должен отказаться от своей базы данных и начать заново с нуля. Это отнимает у них много времени, так как им приходится снова заполнять таблицы новыми данными. У меня довольно ограниченные знания sql, и мои поиски решения пока оказались бесплодными.

Есть ли способ обновить таблицы независимо от того, существуют ли они и не нужно ли отбрасывать схему и начинать заново?

Большое спасибо

1 Ответ

1 голос
/ 19 сентября 2011

То, что вы ищете, это оператор ALTER TABLE, ADD.

http://msdn.microsoft.com/en-us/library/ms190273.aspx

ALTER TABLE Comments ADD newColumn INT 

В качестве примера.

Тогда вопрос,становится, как вы делаете это для всей базы данных?Что вам нужно, это иметь инструмент SQL Delta.(Вот пример одного http://www.sqldelta.com/, но есть и другие!)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...