Sql server SSDT sqlpackage.exe发布输出打印”;改变;语句,而不实际更改sql脚本中的对象

Sql server SSDT sqlpackage.exe发布输出打印”;改变;语句,而不实际更改sql脚本中的对象,sql-server,visual-studio,sql-server-data-tools,Sql Server,Visual Studio,Sql Server Data Tools,其他人是否遇到过从sqlpackage.exe发布/生成脚本生成的sql中出现的bug 基本上,它会生成很多打印语句,就像它在更改对象一样,但是脚本中没有用于更改这些对象的sql(尽管对于任何其他预期的更改都有其他sql) 看起来是这样的: .... USE [$(DatabaseName)]; GO PRINT N'Altering [dbo].[TableName]...'; GO ALTER TABLE [dbo].[TableName] DROP COLUMN [ColumnNa

其他人是否遇到过从sqlpackage.exe发布/生成脚本生成的sql中出现的bug

基本上,它会生成很多打印语句,就像它在更改对象一样,但是脚本中没有用于更改这些对象的sql(尽管对于任何其他预期的更改都有其他sql)

看起来是这样的:

....
USE [$(DatabaseName)];


GO
PRINT N'Altering [dbo].[TableName]...';


GO
ALTER TABLE [dbo].[TableName] DROP COLUMN [ColumnName];

GO
PRINT N'Altering PK_Table1PrimaryKey...';


GO
PRINT N'Altering PK_Table2PrimaryKey...';


GO
PRINT N'Altering UK_Table1UniqueKey...';


GO
PRINT N'Altering [dbo].[TableName].[idx_Index1]...';


GO
PRINT N'Altering [dbo].[stp_1]...';


GO
ALTER  PROCEDURE [dbo].[stp_1]
AS
BEGIN
.....
因此,它主要使用约束和索引,其中有一个PRINT语句,而没有匹配的sql语句。我还没有看到存储过程的问题

我找不到任何与此相关的连接票证,但我在多个SSDT数据库项目(VS2012和2013)中看到了这种行为

我假设在架构中检测到差异,但发布设置会覆盖更改(例如,启用“忽略填充因子”或“文件组放置”设置)。这似乎是一个bug,它正在抑制sql而不是输出,当您想要查看(或预览)部署但输出中的更改实际上没有发生时,这是非常误导的


任何洞察都将不胜感激,因为我已经尝试用谷歌搜索这个问题有一段时间了,但运气不好。谢谢

没有遇到过这个,但是想知道对于这个特定的发布您有什么选择吗?您是否选择不推送索引/约束?还有什么不一样的吗?如果您将项目与目标数据库进行模式比较,是否也会发生这种情况?实际上,我根据类似的经验找到了原因-。我的发布设置不会忽略填充因子差异。在这些仅显示为打印语句的特定对象上,项目中没有填充因子设置。模式比较确实显示了差异。您可能会认为publish会假定这些索引的默认设置,或者只保留服务器上的设置。因此,解决方法是只保留ignore fill factor设置,我认为大多数人都必须这样做,或者确保在项目中设置了所有索引。但似乎应该有一张连接票来修复这个bug。如果它不会改变它们,好吧,但不要生成打印声明说它改变了。很好,艾米丽。我认为我们要么在数据库中设置了填充因子,要么在发布时忽略了它。我想说在网上开一张联程票可能是值得的。谢谢你,彼得。如果有人想投票,我已经提交了一张连接票。