每次脚本在不同的服务器上 运行 时,是否会生成具有不同占位符名称的未命名约束?

Will unnamed constraints be generated with different placeholder names each time a script is run on a different server?

我有一个未命名的数据库,或者似乎是针对其中的某些约束随机生成的名称。

名称如:DF___MyTable_Busin_CompE_139BEED8

当我们要向客户提供涉及数据库更改的新版本应用程序时,我们会向客户提供由 Visual Studio 的数据库项目功能生成的脚本。

这次我们收到错误报告,例如 Column already has a DEFAULT bound to it.

当我检查我们提供的脚本时,它确实在添加新默认值之前删除了约束。

所以我想知道这些约束是否在不同的服务器上以不同的名称生成,然后当脚本要删除现有的默认约束时,它会尝试删除不存在的约束,然后再次失败试图向字段添加新的默认约束?

我更像是 C# 人,而不是 SQL 人,不确定这些东西是如何工作的。

你的想法是正确的。您不能依赖生成的约束名称。

如果您要删除并重新创建约束,则无法保证在两个系统甚至同一系统上生成相同的约束名称。您应该始终尝试使用命名约束。