我正在寻找一些“最佳实践”来自动部署源代码控制中的存储过程/视图/函数/表更改。我正在使用 StarTeam 和 ANT,因此标签已得到处理;我正在寻找的是你们中的一些人如何从源头自动提取这些对象 - 不一定是 StarTeam。

我希望最终得到一个可以执行、签入和标记的脚本。

我并不是要求任何人写这些——只是一些过去有效(或无效)的想法或方法。

我正在努力清理混乱,并希望确保我尽可能地接近“正确”。

我们正在存储表/视图/函数等。在 StarTeam 的各个文件中,我们的数据库是 SQL 2K5。

有帮助吗?

解决方案

我们使用来自 redgate 的 SQL Compare(http://www.red-gate.com/).

我们有一个生产数据库,一个开发数据库,​​每个开发人员都有自己的数据库。

开发数据库与开发人员签入更改时对其数据库所做的更改同步。

开发人员还签入同步脚本和由 SQL Compare 生成的比较报告。

当我们部署应用程序时,我们只需使用 SQL Compare 将开发数据库与生产数据库同步即可。

这对我们有用,因为我们的应用程序仅供内部使用。如果这不是您的情况,那么我会查看 SQL Packager(也来自 redgate)。

其他提示

入住 迁移 (指出由 安德鲁·彼得斯另一个帖子)

我更喜欢将视图、过程和触发器(可以随意重新创建的对象)与表分开。对于视图、过程和触发器,只需编写一个作业来检查它们并重新创建最新的。

对于表,我更喜欢有一个只有一行的数据库版本表。使用该表来确定哪些新更新尚未应用。然后应用每次更新并更新版本号。如果更新失败,您只需检查该更新,并且可以重新运行,因为之前的更新不会再次发生。

正如 Carl 指出的,您可以使用 diff 实用程序来创建更新脚本。RedGate 是一个很好的产品,但 SQL Server 2k5 附带了 表差异 这也应该可以完成这项工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top