[英]Version controlling DDL changes
我正在尝试找出SQL版本更改的最佳方法。 我知道有像Redgate和Microsoft的SSDT这样的产品,但是同样地,我想知道是否可以通过更手动的过程来简化自动化部署。
我有以下要求
如果我使用Redgate或SSDT,是否需要从数据库的当前状态生成部署脚本?
目前,我想知道是否将更改脚本和同步创建脚本放入git / svn是最简单的方法。 但是,两个人可能不同步,这让我感到不安。
将更改脚本保留在源代码管理中是一件很痛苦的事情,因为要回到特定的时间点,您需要运行基本创建,然后运行所有更改脚本,并且必须编写手动回滚脚本(如果需要)
编写手动更改脚本也很麻烦,因为您必须实际编写脚本,而这是2015年,所以不要这样做!
因此,我真的建议您使用SSDT或redgate,redgate很酷,但是SSDT是免费的,并且还包括设计时检查和重构,因此,如果您在SSDT中重命名表,它将生成sp_rename而不是删除第一个表并创建一个新的(这是redgate工具会执行的操作)
无论使用哪种工具,都有命令行版本的工具可以在您实际要发布时进行比较/部署,因此签入的代码仅在发布时显示您希望数据库处于的状态。
根据您的要求,redgate和ssdt都将执行全部三个操作(第3个除外,第3个通过在源代码管理中使用create语句表示数据库来解决)
您唯一没有提到的是静态数据或参考数据,可以使用redgate数据比较工具来处理此问题,或者如果您不打算使用ssdt来链接表,则可以使用redgate源代码控制ssms加载项到csv文件。
如果要使用SSDT,请使用部署后脚本,并为需要存储在源代码管理中的每个表提供合并语句。
对于所有开发T-Sql代码的人来说,SSDT确实是前进的方向(即使他们还没有意识到!)
埃德
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.