我正在寻找一些“最佳实践”,用于从源代码管理中自动部署存储过程/视图/函数/表更改。我正在使用StarTeam& ANT所以标签被照顾;我正在寻找的是你们中的一些人如何接近从源头自动拉动这些物体 - 不一定是StarTeam。
我想最终得到一个可以执行,签入和标记的脚本。
我不是要求任何人写这些 - 只是过去曾经(或没有)工作的一些想法或方法。
我正在努力清理乱七八糟的东西,并希望确保尽可能接近“正确”。
我们将表/视图/函数等存储在StarTeam中的各个文件中,而我们的数据库是SQL 2K5。
答案 0 :(得分:4)
我们使用来自redgate(http://www.red-gate.com/)的SQL Compare。
我们有一个生产数据库,一个开发数据库,每个开发人员都有自己的数据库。
开发数据库与开发人员在检查更改时对其数据库所做的更改同步。
开发人员还会检查同步脚本和SQL Compare生成的比较报告。
当我们部署应用程序时,我们只需使用SQL Compare将开发数据库与生产数据库同步。
这适用于我们,因为我们的应用程序仅供内部使用。如果这不是你的场景,那么我会看看SQL Packager(也来自redgate)。
答案 1 :(得分:3)
答案 2 :(得分:1)
我更喜欢从表中分离视图,过程和触发器(可以随意重新创建的对象)。对于视图,过程和触发器,只需编写一个可以检出它们并重新创建最新版本的作业。
对于表,我更喜欢有一行数据库版本表。使用该表确定尚未应用的新更新。然后应用每个更新并更新版本号。如果更新失败,您只需要检查该更新,并且您可以重新运行,知道先前的更新不会再次发生。
答案 3 :(得分:1)
正如Carl指出的那样,您可以使用diff实用程序来创建更新脚本。 RedGate是一个很好的产品,但SQL Server 2k5附带TableDiff,它也应该可以完成这项工作。