Я использую базу данных MS SQL Server и использую множество представлений (для использования с O / R mapper). Немного раздражает, что я хотел бы
- использовать привязку схемы
- обновление с помощью скриптов (для развертывания на серверах и установки в систему контроля версий)
но сталкиваюсь с тем, что всякий раз, когда я хочу, например, Чтобы добавить столбец в таблицу, я должен сначала удалить все представления, которые ссылаются на эту таблицу, обновить таблицу, а затем воссоздать представления, даже если представления не требуют обновления в противном случае. Это делает мои скрипты обновления намного длиннее, а также, просматривая различия в системе управления версиями, становится сложнее увидеть, что было на самом деле актуальным изменением.
Есть ли лучший способ справиться с этим?
Мне все еще нужно иметь возможность использовать простые и контролируемые исходниками обновления sql. Такой генератор кода, который включен в SQL Server Management Studio, был бы полезен, но у меня были проблемы с SQL Server Management Studio, так как он имеет тенденцию создавать код, в котором не указываются имена для некоторых индексов или (по умолчанию) ограничений. Но я хочу иметь идентичные базы данных, когда я запускаю свои сценарии в разных системах, включая имена всех ограничений и т. Д., Чтобы мне не приходилось прыгать через циклы при обновлении этих ограничений позже.
Так что, возможно, разумнее генератор кода SQL будет решением?
Мой рабочий процесс теперь:
- введите оператор
alter table
в редакторе запросов
- проверить, получаю ли я сообщение об ошибке типа "
cannot ALTER 'XXX' because it is being referenced by object 'YYY'
."
- использовать SQL Server Managment Studio для создания сценария me
create
кода для ссылочного объекта
- вставить оператор
drop
перед оператором alter и создать оператор после
- проверьте, создает ли оператор
drop
ошибку, и повторите
это меня раздражает, но, возможно, мне просто придется с этим смириться, если я хочу продолжать использовать привязку схемы и обновления скриптов ...