【发布时间】:2021-01-20 08:06:57
【问题描述】:
使用 SQLPackage 执行 DACPAC 文件时出现以下错误。
必须添加表 [dbo].[Temp] 上的 [dbo].[Temp].[GMTOffset] 列,但该列没有默认值并且不允许 NULL 值。如果表包含数据,则 ALTER 脚本将不起作用。为避免此问题,您必须:向列添加默认值,将其标记为允许 NULL 值,或启用智能默认值的生成作为部署选项。
PowerShell 脚本 - & $using:SqlPackagePath /Action:Publish /tu:$using:DatabaseUsername /tp:$using:DatabasePassword /tsn:$using:ServerInstance /tdn:"$_" /sf:$using:DacpacLocation /p:BlockOnPossibleDataLoss=False
我在数据库项目的发布配置文件中设置了“在适用时生成智能默认值”设置,并在编译项目后执行 PowerShell 脚本,但是仍然出现此错误。任何指针或帮助将不胜感激。
【问题讨论】:
-
可能是您的 GMTOffset 是不支持智能默认值的类型。如果添加实际的默认约束会发生什么?如果您在命令行上指定使用智能默认值的选项怎么办?您在命令行中使用发布配置文件的选项在哪里?在你上面的例子中我没有看到。
-
是的,在命令行上指定此选项后,我能够解决此错误。
标签: database-project dacpac sqlpackage