【问题标题】:Getting error while executing DACPAC file (using sqlpackage.exe)执行 DACPAC 文件时出错(使用 sqlpackage.exe)
【发布时间】: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


【解决方案1】:

@Peter 也提到,在命令行上指定此选项后,此错误已解决。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-16
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2015-02-09
    相关资源
    最近更新 更多