Проблемы чувствительности к регистру в Schema Compare и SqlPackage 150 - PullRequest
1 голос
/ 17 марта 2020

Итак, я установил новый SqlPackage 150 (у которого было 140 раньше без проблем) и дважды развернул базу данных (sqlpackage - шутка, это нужно сделать дважды при любом обновлении, чтобы увидеть какие новые причуды он имеет, когда изменяет нетронутый код) , я заметил, что это изменяет функции, даже если в реальном коде не произошло никаких изменений. Раньше у меня были проблемы с SqlPackage и очень плохо разработанными методами сравнения, я научился обходить их:

  • не используйте iif, используйте case
  • сохраняйте все case when then ... end в одной строке независимо от ее длины
  • всегда заключать в скобки (значения по умолчанию) и (вычисляемые поля)
  • называть все ограничения (pks, unique) , проверки)

Сегодня что-то новое появилось . Весь мой код sql написан строчными буквами, а все имена заключены в кавычки [name], поэтому он чистый, как: create function [dbo].[fnFunction1](...). Но новый SqlPackage решил изменить ALL мои функции. Не процедуры, не таблицы, не представления, не триггеры, даже если все они написаны строчными буквами create *. Я пытался опубликовать sh 3 раза, то же самое. Всегда меняются только функции.

Поэтому я запустил Schema Compare, чтобы увидеть, в чем проблема. Вот как я ранее нашел причуды sqlpackage, которые я перечислил ранее, методом проб и ошибок. Я посмотрел на различия, и всегда есть одна разница:

  • локальный код имеет create function ...
  • удаленный код имеет CREATE function ...

Да, Ignore keyword casing отмечен в опциях сравнения схем и в профиле Publi sh в проекте SSDT. Кажется, это не имеет отношения к функциям.

Разница в корпусе вызывает изменение функций, но не более того, даже если я всегда использую (и всегда использовал) create в нижнем регистре. Так удаленно он хочет CREATE function, в то время как локально он имеет create function. Пока create table\view\procedure\trigger\index\... круто.

Что здесь происходит? Я действительно не хочу менять регистр функций, также я не хочу изменять в каждой публикации sh, также не хочу возвращаться к SqlPackage 140.

Проблема не произошла происходит с использованием SqlPackage140 с SqlServer 2019 , но происходит на SqlPackage150 с SqlServer 2019 .

...