2012-01-12 67 views
1

我一直在研究开发和生产数据库时要遵循的正确过程。我发现的最好的文章是这样的:Strategies for Database Development and Deployment,但我不能接受这个想法,我必须手动维护一个Word文档,以便对数据库进行的每一项更改。这对我来说似乎是荒谬的...将最新更改部署到生产数据库 - 不丢失数据

我使用SQL Server Management Studio来管理我的SQL数据库都在dev和prod中。有没有办法将最新的更改部署到生产中,而不销毁表和数据。有人可以请我指出一个关于如何在SSMS中完成的好的程序性文章。

感谢

回答

3

对数据库设计进行更改而不创建放入源代码管理的更改脚本是不负责任的。

但是,如果您已经处于这种状况,我建议您购买red_gate的SQLCompare。它将查看两个数据库并编写差异。尽管如此,您仍然无法运行这个功能 - 有时您对dev数据库进行了更改,这些数据库尚未被推到prod上,而且SQLCompare无法知道这一点。创建脚本要好得多(在表格当前存在时使用alter table,以免破坏现有数据),并将它们保留在源代码管理中,同时您将同时推送其他代码。

+0

感谢所有人的输入......我想我只需要更好地跟踪和存储我的更改脚本并使用这些更改来推动更改。 – Nugs 2012-01-12 17:31:35

+0

您可能需要考虑将SQL Compare与SQL Source Control结合使用,因为这样不仅可以版本化数据库,还可以选择指定的任何自定义迁移脚本(例如ALTER)。 SQL Compare在构建其部署脚本时重新使用这些知识。 – 2012-01-21 19:35:37

1

做到在prodiction的唯一正确途径 - 有或没有Management Studio中 - 准备,检查,测试和手动运行的脚本。

WITH FRESH BACKUP!

1

通常的策略是保持一组有序的变化脚本,例如,以日期或数据库版本为前缀,通过从生产的新备份开始,可以在开发数据库中轻松进行测试。更改脚本通常可以在进行更改时从SQL Server Management Studio生成,或者可以在发生更复杂的更改时手动制作。

另一个建议是版本控制数据库定义(表,程序等)。这可以通过使用SQL Server Management Studio在每次更新后为所有对象生成创建脚本来轻松实现。通过这种方式,您可以轻松比较随时间或不同环境所做的更改。

相关问题