У меня есть база данных, импортированная в .sqlproj
, и профиль публикации .publish.xml
, который публикует изменения в удаленной БД.SSDT publish script обновляет процедуры без изменений
Полагаю, что когда я нажимаю правой кнопкой мыши -> Публиковать -> Сгенерировать скрипт, он должен рассчитать разницу между локальными определениями и удаленной БД и сгенерировать сценарий, чтобы привести удаленный БД в соответствие.
Все это, кажется, работает хорошо, однако, сценарий он генерирует всегда содержит ALTER FUNCTION
и ALTER PROCEDURE
заявления для одних и тех же 40 или около процедур и функций (из в общей сложности около 1000 определена), ли они изменились или нет. Когда я сравниваю операторы ALTER
со скриптовой функцией как -> ALTER с скриптом в SSMS, они точно такие же.
Итак, мой вопрос: почему VS думает, что это разные, или почему они воссоздают их в любом случае, если они одинаковы?
Примечание:
- функция не является специальным - некоторые из них так просто, как определяющий VARCHAR, установив его значение и возвращает его.
- Я попытался запустить сценарии
ALTER
в базе данных, но они по-прежнему генерируются. - Я проверил свойства (щелкните правой кнопкой мыши -> свойства) в SSMS, но не вижу ничего очевидного в том, что он всегда воссоздает, а тем, что он не делает.
- Мой опубликованный профиль - это стандартное болото.
Благодаря
Может вы используете «сравнение схемы» в SSDT, чтобы узнать, что он «думает» о различиях? Часто бывает полезно сделать это, а затем вставить «целевой» скрипт в исходный файл; таким образом, вы можете быть уверены, что у вас есть «каноническая» форма скрипта.Я вижу это чаще с ограничениями и триггером, чем с хранимыми процедурами, чтобы быть справедливым. Может помочь поисковая система «Каноническая форма SSDT». –