![]() |
1
5
我为Red Gate的SQL源代码管理工作。 这种改变需要重新创建一个表。默认情况下,SSMS不允许您保存更改。但是,该选项必须已在SSMS中禁用。它位于“工具”下->选项->设计师->表和数据库设计器->防止保存需要重新创建表的更改。 如果该功能被禁用,SQL源代码管理会将其视为潜在的数据丢失情况,并提示您是否要添加迁移脚本。 如果您团队中的其他开发人员通过获取最新信息来获取此更改,那么SQL源代码管理将根据其本地数据库的当前状态,向他们提供更多详细信息,以了解任何潜在的数据丢失。如果唯一的更改是向现有表中添加列,则不会删除未更改列中的数据。 如果您正在部署到另一个数据库(例如staging/UAT/prod),并且您有SQL Compare,那么如果您尝试在另一个非本地数据库上运行它,您可以使用它来查看将应用于数据库的确切内容。选择创建部署脚本选项,就可以在运行之前对SQL进行健全性检查。 正如您所说,将列添加到表的末尾将避免重新生成的需要,因此如果您不需要担心列在哪里,这可能是避免这种情况的最简单方法。 或者,您可以将迁移脚本添加到:
您提到了Migrations v2,这是一个测试版功能,它改变了迁移的工作方式,以便更好地支持分支和合并以及DVCS系统。看见 http://www.red-gate.com/migrations 版本1迁移脚本需要进行一些修改才能转换为v2迁移脚本。这是一个相当微不足道的变化。我们目前正在记录这一变化,如果您想了解更多关于这一变化的信息,请联系我们的谷歌小组。 https://groups.google.com/forum/#!forum/red-gate-migrations |
![]() |
2
1
我使用SSMS将该列移动到表的末尾,以消除对迁移脚本的需求。 在类似的场景中,移动列不方便,这就是我将SSMS脚本转换为Migrations V2脚本所做的操作。
|
![]() |
3
0
下面是一个简单的sql查询,它将有助于在数据库表中插入列而不会丢失数据。
比方说
|