SSDT 不发布列 COLLATION 更改

SSDT does not publish column COLLATION change

SSDT 似乎没有发布 COLLATION 列,即使它在比较过程中检测到更改。

出现一个问题,如果您更改 table 中特定列的列 COLLATION 并尝试发布更改,SSDT 将在创建发布脚本时忽略它。

msdn forums 上描述了一个类似的问题,很久以前就发现了,现在仍然重现。

我一直在使用SSDT版本14.0.60629.0 SSDT 是否仍然存在此问题,或者是否有有效的解决方法?


更新 此问题仅适用于使用用户定义数据类型的列。
更新 (添加了重现步骤,并更正了问题文本):

重现步骤:

1. 从数据库开始并记下排序规则
(这是我的,我的开发服务器上的一个数据库):

当前 COLLATION 设置是:

2.Then 更改数据库排序规则。

USE master;
ALTER DATABASE [<db_name>] COLLATE SQL_Latin1_General_CP1250_CS_AS



新的 COLLATION 设置将是:

之前的列排序规则 (SQL_Latin1_General_CP1_CI_AS) 将保留,SSDT 比较机制将无法检测到任何更改。

如果我尝试在此列上创建外键约束,并在另一个 table 中引用另一个新填充的列,这将导致出现错误消息,因为比较中的发布脚本是在没有构建的情况下构建的知道真正的排序规则。
例如,这会产生错误,因为列排序规则不同:

ALTER TABLE [FCT].[Inventory] WITH NOCHECK
ADD CONSTRAINT [FK_Inventory_Source] FOREIGN KEY ([Source]) REFERENCES [DIM].[Source] ([SourceCode]);

确保在发布设置(选项卡:常规)中启用 "script database collation"
来源:https://dba.stackexchange.com/questions/128002/ssdt-publish-window-what-does-checkbox-enable-mean

然后可能需要多次发布
首先它在数据库级别执行,然后在 table/column 级别