VS 2013数据库项目:基于构建配置运行的部署后脚本

时间:2014-08-27 15:31:17

标签: visual-studio-2012 visual-studio-2013 database-project sql-server-data-tools

是否有可用的方法/机制在Visual Studio 2012/2013中基于SSDT的数据库项目中基于构建配置运行不同的部署后脚本集?我想通过部署“测试”配置来预先填充我的数据以进行测试/持续集成,但自然不希望在其他环境中执行此操作。我似乎无法找到一种方法将部署后脚本有条件地链接到构建配置,这对我来说似乎很奇怪。

2 个答案:

答案 0 :(得分:8)

您可以通过编辑MSBuild使用的.sqlproj文件来完成此操作。然后,当您构建“测试”配置时,在“发布”模式下构建时,您将获得不同的dacpac内容。例如:

  • 创建项目并添加PostDeployment脚本
  • 卸载项目并编辑.sqlproj文件
  • 将包含PostDeploy脚本的ItemGroup更改为如下所示:

<ItemGroup Condition=" '$(Configuration)' == 'Release' "> <PostDeploy Include="Debug.PostDeployment1.sql" /> </ItemGroup>

  • 构建调试配置并解压缩dacpac:不包含postdeploy.sql文件
  • 构建测试配置并解压缩dacpac:postdeploy.sql文件将在那里。

答案 1 :(得分:3)

您也可以使用SQLCMD变量来执行类似的操作。如果值==&#34;测试&#34;,则运行一组值。如果没有,请运行其他东西。我在这里写了博客:

http://schottsql.blogspot.com/2013/05/trick-to-not-run-prepost-sql-on-publish.html

它没有在构建上完成,并且脚本总是以这种方式包含在内,但如果这不是问题,它可以让您轻松编写代码以便在各种环境中轻松运行。

相关问题