首页 > 解决方案 > 执行 DACPAC 文件时出错(使用 sqlpackage.exe)

问题描述

使用 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 脚本,但是仍然出现此错误。任何指示或帮助将不胜感激。

标签: database-projectdacpacsqlpackage

解决方案


正如@Peter 也提到的,在命令行上指定此选项后,此错误已得到解决,如下所示。

& $using:SqlPackagePath /Action:Publish /tu:$using:DatabaseUsername /tp:$using:DatabasePassword /tsn:$using:ServerInstance /tdn:"$_" /sf:$using:DacpacLocation /p:GenerateSmartDefaults=True /p:BlockOnPossibleDataLoss=False


推荐阅读