Neo*_*Neo 11 schema migration ssdt
这似乎是一个愚蠢的问题,但我一直在研究模式迁移的开源解决方案,即 Liquibase 和 Flyway。
但是,我的老板告诉我 SQL Server Data Tools (SSDT) 可以完成同样的工作。我不确定是否同意,但我在互联网上几乎找不到直接将其与 Liquibase 和/或 Flyway 进行比较的内容。
我的观点是SSDT是SQL Server的开发、数据建模和设计工具,还支持模式比较(及其生成脚本)和源代码控制。尽管在模式迁移的某些方面可能与 Liquibase/Flyway 有一些重叠,但它解决了一个不同的问题。但作为整体架构迁移工具,Liquibase 和 Flyway 是完全专用的工具,而 SSDT 则更多用于数据库的设计和开发。
即使只是说没有比较并且 SSDT 本身根本不是模式迁移工具,任何意见也将不胜感激。
Ed *_*ott 18
SSDT 与 Liquibase/Flyway 相当,因为它做了他们所做的,但采用了不同的方法。有了 SSDT,您就拥有了开发环境,因此您可以获得诸如转到定义、查找引用和智能感知以及将项目编译到 dacpac 然后将该 dacpac 部署到数据库的能力。
进行部署的 SSDT 方式(和 redgate sql 比较方式)是声明您想要的内容,因此如果您想更改如下所示的表:
create table a(id int)
Run Code Online (Sandbox Code Playgroud)
到一个看起来像的表:
create table a(id int, another_column varchar(12))
Run Code Online (Sandbox Code Playgroud)
使用 SSDT,您只需将表定义更改为第二个,让 SSDT 担心如何升级它(它可以执行更改表、添加列或更改列顺序,因此您需要重建表等)。
使用 Liquibase(DbUp、ReadyRoll、手动方法等),在这种情况下,您必须自己编写更改表并确保以正确的顺序运行脚本,请考虑以下场景:
如果错过任何一个版本,下一个版本都不能继续。
升级脚本(Liquibase、DbUp 等)的好处:
比较/合并的好处(SSDT、Redgate SQL 比较):
升级脚本的缺点:
使用比较/合并的缺点:
就我个人而言,我真的认为 SSDT 是一个专业的开发环境,这意味着我可以专注于编写有用的代码和测试,而不是编写本身只是达到目的的手段的升级脚本。
你征求意见,所以你去:)
编辑