Schema Compare和SqlPackage 150区分大小写的问题

问题描述 投票:1回答:1

所以我安装了新的SqlPackage 150 (以前有140,没有问题)并两次部署了数据库(sqlpackage是个玩笑,在任何更新中都需要这样做两次,以查看它有哪些新的怪癖。当它更改未修改的代码时具有),我注意到它正在更改功能,即使实际代码中未发生任何更改。在使用SqlPackage之前遇到了麻烦,并且它的比较方法设计得很差,我学会了解决方法:

  • 不要使用iif,请使用case
  • 无论多长,都将整个case when then ... end保留在一行上
  • 总是用括号括起来(默认值)和(计算字段)
  • 命名所有约束(pk,唯一性,检查)

今天,出现了一些新情况。我所有的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很酷时。

这里发生了什么?我真的不想更改函数的大小写,也不想在每次发布时都进行更改,也不想恢复到SqlPackage 140。

问题没有使用

在SqlServer 2019中使用SqlPackage140

发生,但是在在SqlServer 2019中使用SqlPackage150上发生。
sql-server tsql sql-server-data-tools sqlpackage schema-compare
1个回答
0
投票
此行为已通过create table\view\procedure\trigger\index\...修复。但是它并没有自我更新,我必须自己手动进行。
© www.soinside.com 2019 - 2024. All rights reserved.