Met*_*hor 13 sql-server msdeploy visual-studio-2013 sql-server-2014 sql-server-data-tools
使用sqlpackage.exe发布dacpac时,它首先运行Schema Compare,然后运行预部署脚本.例如,当您需要删除表或重命名列时,这会导致问题.架构比较是在修改对象和部署失败之前完成的.必须重复发布才能考虑新模式.
任何人都有一个解决方案,不涉及两次发布?
Vad*_*oda 10
Gert Drapers 在此处将其称为预部署前脚本
实际上这是一个挑战.如果需要将非可空和外键列添加到充满数据的表中 - 您只能使用单独的脚本.
如果您是唯一的开发人员 - 这不是问题,但是当您拥有一个大型团队时,必须在每次数据库发布之前以某种方式执行"单独脚本".
我们使用的解决方法:
<UsingTask
TaskName="MSBuild.MsSql.DeployTask"
AssemblyFile="$(MSBuildProjectDirectory)\Deploy\MsBuild.MsSql.DeployTask.dll" />
<Target Name="AfterBuild">
<DeployTask
Configuration="$(Configuration)"
DeployConfigPath="$(MSBuildProjectDirectory)\Deploy\Deploy.config"
ProjectDirectory="$(MSBuildProjectDirectory)"
OutputDirectory="$(OutputPath)"
DacVersion="$(DacVersion)">
</DeployTask>
</Target>
Run Code Online (Sandbox Code Playgroud)
上面的MsBuild.MsSql.DeployTask.dll是自定义MSBuild任务.
因此,可以从Visual Studio调用"Before-publish"脚本.
对于CI,我们使用批处理文件(*.bat),其中调用了相同的两个实用程序(SQLCMD.EXE和SQLPACKAGE.EXE).
我们得到的最后一个过程有点复杂,应该在另一篇文章中描述 - 这里我只提到了一个方向:)
| 归档时间: |
|
| 查看次数: |
5275 次 |
| 最近记录: |