【问题标题】:Is there any way to stop SqlPackage.exe setting default Filegroup in deployment script?有什么方法可以停止 SqlPackage.exe 在部署脚本中设置默认文件组?
【发布时间】:2017-02-28 01:41:13
【问题描述】:

我们正在使用 Sql Server 数据库项目通过 SqlPackage.exe 从 DacPac 创建部署脚本。我们在各种环境中设置了不同的 SQL Server 文件组。 部署时,我们排除文件组,因为我们希望在默认文件组中创建对象。在数据库项目设置中,默认文件组不会从 PRIMARY 更改。

这会在尝试部署到默认文件组不是 PRIMARY 的环境时出现问题,因为包含以下代码...

ALTER DATABASE [$(DatabaseName)]
    MODIFY FILEGROUP [PRIMARY] DEFAULT;

有没有办法防止在部署 SQL 中产生这种情况?

【问题讨论】:

    标签: sql-server sql-server-data-tools dac sqlpackage


    【解决方案1】:

    当您在 SQL Server Management Studio 中从 SSDT 生成 dacpac 文件时,您无法选择提取到 dacpac 的对象类型。

    但是当你通过命令行运行 sqlpackage.exe 时,你可以使用一个参数。

    sqlpackage.exe your_deploy_options /p:ExcludeObjectTypes=Filegroups

    这将忽略文件组的部署。 有关完整选项,请参阅此参考:https://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx

    如果你有 Visual Studio,那么你可以在 VS 中将你的数据库作为一个数据库项目导入,然后从脚本中删除文件组,这样当你部署/比较架构时,它们就不会被比较。

    【讨论】:

    • 感谢您的回答罗德里戈,但不幸的是,这不会删除修改语句。
    • 这对我也不起作用。我正在尝试删除 ALTER DATABASE - MODIFY FILEGROUP [Filegroupname] DEFAULT;我的 sqlpackage 脚本中的行。
    【解决方案2】:

    我不知道您是否可以在 SSDT 中禁用它。

    但是您可以使用部署计划贡献者来过滤掉 MODIFY FILEGROUP 语句或以您想要的方式更改它。你可以在这里找到详细的说明和工作代码:http://scardevblog.blogspot.com/2015/03/ssdt-generates-2012-option-for-target.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2019-09-20
      • 1970-01-01
      • 2020-10-02
      相关资源
      最近更新 更多