所以我安装了新的SqlPackage 150 (以前有140,没有问题)并两次部署了数据库(sqlpackage是个玩笑,在任何更新中都需要这样做两次,以查看它有哪些新的怪癖。当它更改未修改的代码时具有),我注意到它正在更改功能,即使实际代码中未发生任何更改。在使用SqlPackage之前遇到了麻烦,并且它的比较方法设计得很差,我学会了解决方法:
iif
,请使用case
case when then
... end
保留在一行上今天,出现了一些新情况。我所有的sql代码均以小写形式编写,所有名称都用[name]
引用,因此它很干净:create function [dbo].[fnFunction1](...)
。但是新的SqlPackage决定更改ALL我的函数。不是过程,不是表,不是视图,也不是触发器,即使全部都用小写[C0]编写。我试图发表3次,同样的事情。始终仅更改功能。
所以我跑了create *
来查看问题所在。这就是我以前通过反复试验发现前面列出的sqlpackage的怪癖的方式。我查看了差异,并且总是有一个差异:
Schema Compare
create function ...
是的,我确实在Schema Compare选项和SSDT项目的Publish Profile中选中了
CREATE function ...
。它似乎与功能无关。
大小写不同会导致功能被更改,但是即使我始终使用小写[ Ignore keyword casing
,也不会改变其他功能。因此,远程需要create
,而本地需要CREATE function
。当create function
很酷时。
问题没有使用发生,但是在在SqlServer 2019中使用SqlPackage150上发生。在SqlServer 2019中使用SqlPackage140
create table\view\procedure\trigger\index\...
修复。但是它并没有自我更新,我必须自己手动进行。