【发布时间】:2011-01-14 16:51:42
【问题描述】:
我很想知道在 Web 应用程序(ASP.NET、SQL Server 2008)中更改生产数据库和源代码的好方法。
更多细节,我们在本地机器上开发,然后我们需要将代码和数据库更改转移到生产中(几乎是标准故事)。
目前我们在晚上做,直接从生产服务器上的管理工作室更改数据库,然后覆盖现有的asp.net代码(复制/过去)。
【问题讨论】:
标签: asp.net sql-server database deployment
我很想知道在 Web 应用程序(ASP.NET、SQL Server 2008)中更改生产数据库和源代码的好方法。
更多细节,我们在本地机器上开发,然后我们需要将代码和数据库更改转移到生产中(几乎是标准故事)。
目前我们在晚上做,直接从生产服务器上的管理工作室更改数据库,然后覆盖现有的asp.net代码(复制/过去)。
【问题讨论】:
标签: asp.net sql-server database deployment
您说的是发布管理。您要问的是一个有很多不同答案的大主题。最适合您的解决方案不是我们可以告诉您的。需要权衡取舍。
例如,您所描述的是一个非常基本的发布管理流程,该流程将被视为“不成熟”流程......它没有考虑回滚计划、版本控制、关注点分离、适当的测试或“成熟”的发布管理过程涉及的一百个其他因素中的任何一个。
一个成熟的流程很好,但如果你没有资源,那是不可行的。
直截了当,我认为您的问题无法在这里得到完整的回答。我建议开始研究“变更管理”、“发布管理”、“应用程序生命周期管理”和“应用程序开发生命周期”。我会在一分钟内为您提供一些好的入门链接。
不过,这只是一个警告,您提出的问题将以您可能没有考虑过的方式打开您的眼睛和您的世界。有一些事情需要考虑,比如自动构建、为您完成的工具(高价、免费以及介于两者之间的一切)
http://en.wikipedia.org/wiki/Release_management
http://en.wikipedia.org/wiki/Application_lifecycle_management
您可以在此处找到一些简单的选项来满足您的要求: http://msdn.microsoft.com/en-us/library/7hd4c0x3(VS.80).aspx
另外,由于您谈到了源代码而没有提及您正在使用哪个源代码管理,所以我需要说...如果您还没有使用源代码管理,那么您需要这样做。一旦你开始使用它,你会想知道没有它你是如何生活的。
【讨论】:
取决于是首次部署新应用还是更新应用。
对于小型更新,将所有数据库更改记录为 sql 脚本。您必须严格强制所有对开发的更改都作为 sql 脚本应用。将脚本放在源代码管理中。通过在生产环境中运行脚本来部署更新。
对于新应用,您可能有数千个脚本。您不能单独运行它们。将它们合并到一个主脚本中需要太多时间。 (尽管您仍然想将每个脚本都检查到源代码管理中)。在这种情况下,您达到了开发的里程碑,然后冻结开发数据库,并将其声明为基线。使用数据库工具生成主脚本。通过运行此脚本来部署生产。为您的查找表手动创建数据脚本,使其与垃圾开发数据分开。
避免数据库副本。避免通过 GUI 手动更改。脚本是方法。如何收集脚本、整合到主脚本、生成脚本等是另一回事。
【讨论】: