Как изменить схему xsd в массивной базе данных SQL Server без значительных простоев
Я предпринял задачу добавления функции в веб-приложение, и добавленная функция потребовала изменения документа xsd, который определяет схему XML. Я добавил несколько новых дополнительных элементов и т. Д.
Новая схема обратно совместима со старой схемой, что означает, что все, что находится в БД теперь под старой схемой, будет действительным в новой схеме (новые вещи являются необязательными).
Мы развернули это в некоторых небольших средах с использованием развертывания в стиле DACPAC, и проблем не было.
Сейчас мы пытаемся использовать набор данных типа prod, и это крайне проблематично. Dacpac занимает очень много времени. Как дни - мне нужно сократить это до часа или двух.
Кто-нибудь знает, есть ли способ обойти этот тип проблемы?
Если я знаю, что схемы совместимы, есть ли способ просто "сказать" ssms об этом, чтобы он мог редактировать схему, не проверяя все?
В противном случае, есть ли способ преобразовать типизированный столбец XML в нетипизированный столбец XML без массовой проверки? Чтобы уточнить, я не могу просто сделать это:
Alter Table [Schema].[Table]
alter column [XmlCol] xml
;
потому что я получаю это:
Msg 5074, Level 16, State 1, Line 4
The object 'DF_Table_XmlCol' is dependent on column 'XmlCol'.
Msg 5074, Level 16, State 1, Line 4
The index 'IX_Table_OtherId_SomeFlag' is dependent on column 'XmlCol'.
Msg 4922, Level 16, State 9, Line 4
ALTER TABLE ALTER COLUMN XmlCol failed because one or more objects access this column.
Мне сказали, что даже если я ОТКЛЮЧУЮ эти ограничения, SSMS все равно потребуется вечно, чтобы заменить типизированный XML на нетипизированный столбец XML...
Есть другие идеи?
РЕДАКТИРОВАТЬ: кажется, что удаление индекса, превращение типизированного XML в нетипизированный XML, а затем добавление индекса обратно было быстрее, чем ожидалось - это заняло около минуты. Когда DACPAC внес аналогичное изменение, для одного стола потребовалось несколько часов. Я планирую протестировать переход от нетипизированного к типизированному, как только смогу, но мне все еще любопытно, как другие люди справляются с такими проблемами... кроме того, чтобы не использовать XML в базе данных, что было бы полностью если бы это было с нуля.