Sql server 在生成更新脚本时包括默认约束名称

Sql server 在生成更新脚本时包括默认约束名称,sql-server,visual-studio-2012,constraints,database-project,schema-compare,Sql Server,Visual Studio 2012,Constraints,Database Project,Schema Compare,我正在Visual Studio 2012中使用SQL Server数据库项目,在比较和生成更新脚本时出现以下问题: 在Visual Studio中,我添加了带有默认约束的列,例如: [NewColumn]NVARCHAR(50)约束[DF_ExistingTable_NewColumn]非空默认值N'' 遗憾的是,在以下情况下,默认约束的名称不会出现: 比较(模式比较)我的项目与实际数据库 生成更新脚本(从架构比较中) 创建的更新脚本包含以下脚本(无约束名称): ALTER TABLE[

我正在Visual Studio 2012中使用SQL Server数据库项目,在比较和生成更新脚本时出现以下问题:

在Visual Studio中,我添加了带有默认约束的列,例如:

[NewColumn]NVARCHAR(50)约束[DF_ExistingTable_NewColumn]非空默认值N''
遗憾的是,在以下情况下,默认约束的名称不会出现:

  • 比较(模式比较)我的项目与实际数据库
  • 生成更新脚本(从架构比较中)
创建的更新脚本包含以下脚本(无约束名称):

ALTER TABLE[dbo].[ExistingTable]
添加[NewColumn]NVARCHAR(50)默认值N''不为空;

这似乎是一个重大疏忽,因此我想知道在哪里可以找到在所有数据库操作中包含默认约束名称的神奇开关。

我认为在您的定义中顺序可能不正确。尝试将“NULL”部分移到行的末尾,而不是在约束定义的中间。

[NewColumn] NVARCHAR(50) CONSTRAINT [DF_ExistingTable_NewColumn] DEFAULT N'' NOT NULL

我只是犯了同样的错误。谢谢,NOT NULL显然必须在最后。