sql-server – 架构比较在发布期间预部署脚本之前运行
|
使用sqlpackage.exe发布dacpac时,它首先运行Schema Compare,然后运行预部署脚本.例如,当您需要删除表或重命名列时,这会导致问题.架构比较是在修改对象和部署失败之前完成的.必须重复发布才能考虑新模式. 任何人都有一个解决方案,不涉及两次发布? 解决方法Gert Drapers将其称为预部署前脚本 here实际上这是一个挑战.如果需要将非可空和外键列添加到充满数据的表中 – 您只能使用单独的脚本. 如果您是唯一的开发人员 – 这不是问题,但是当您拥有一个大型团队时,必须在每次数据库发布之前以某种方式执行“单独脚本”. 我们使用的解决方法: >创建单独的SQL“Before-publish”脚本(在DB项目中),该脚本具有[Build action = None]属性 <UsingTask
TaskName="MSBuild.MsSql.DeployTask"
AssemblyFile="$(MSBuildProjectDirectory)DeployMsBuild.MsSql.DeployTask.dll" />
<Target Name="AfterBuild">
<DeployTask
Configuration="$(Configuration)"
DeployConfigPath="$(MSBuildProjectDirectory)DeployDeploy.config"
ProjectDirectory="$(MSBuildProjectDirectory)"
OutputDirectory="$(OutputPath)"
DacVersion="$(DacVersion)">
</DeployTask>
</Target>
上面的MsBuild.MsSql.DeployTask.dll是自定义MSBuild任务. 因此,可以从Visual Studio调用“Before-publish”脚本. 对于CI,我们使用批处理文件(* .bat),其中调用了相同的两个实用程序(SQLCMD.EXE和SQLPACKAGE.EXE). 我们得到的最后一个过程有点复杂,应该在另一篇文章中描述 – 这里我只提到了一个方向:) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql – 解析查询是什么意思?
- sql-server – 虽然Windows处于空闲状态,但KVM top在Window
- sql – 访问:创建表,如果它不存在
- tsql – SQL_Latin1_General_CP1_CI_AS和SQL_Latin1_Genera
- SQL Server SERVER的BETWEEN AND的使用
- SQL SERVER另类非递归的无限级分类(存储过程版)
- SQLServer中汇总功能的使用GROUPING,ROLLUP和CUBE
- SQL Server:如何从datetime列中选择具有特定日期的记录
- 揭秘SQL Server 2014有哪些新特性(3)-可更新列存储聚集索引
- Mysql数据库存储过程基本语法讲解
