asp.net - 部署 ASP.NET 网站并更新 MSSQL 数据库,零停机时间

标签 asp.net sql-server deployment

我对 ASP.NET 网站和 MSSQL 数据库部署有疑问。我们正在托管 ASP.NET 网站并开发了新版本,一些 ASP.NET 文件已更改,数据库也进行了一些修改。在不停机的情况下上传新版本网站和升级 MSSQL 数据库的最佳理由是什么?

最佳答案

在过去的 5 年里,我管理着一个每月发布一次的大型网站,并且在 95% 以上的时间里实现了零停机。不幸的是,关键是确保数据库始终向后兼容,但仅限于以前的版本,因此您有机会回滚。

因此,例如,如果您计划删除您的应用程序所依赖的列:

  1. 将您的应用程序代码更改为不依赖于该列,然后将其释放(无需删除数据库中的列)。
  2. 下一个版本中,删除该列(因为应用程序不再依赖它)。

这需要您的开发团队进行一些纪律,但如果您有正确的环境设置(开发/测试/登台/生产),那么实现起来会非常容易。

当你释放时:

  1. 将数据库更改部署到尽可能接近生产的临时环境。最好以自动化方式执行此操作,使用 SQL Compare 和 SQL Data Compare 等工具,这样您就知道数据库与您的测试环境完全同步。
  2. 使用应用程序和数据库架构执行“冒烟测试”,确保数据库没有发生重大重大更改。
  3. 发布您的应用代码。
  4. 对您的临时应用程序进行冒烟测试。
  5. 发布到生产环境。

我们为确保网站零停机时间所做的另一件事是蓝绿部署。这涉及到每个网站有 2 个文件夹,更新一个文件夹并在更新后切换 IIS 主目录。我在这里写了一篇博客:http://davidduffett.net/post/4833657659/blue-green-deployment-to-iis-with-powershell

关于asp.net - 部署 ASP.NET 网站并更新 MSSQL 数据库,零停机时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5618478/

相关文章:

c# - 不可见面板中控件的 FindControl 生成 Null 引用错误

asp.net - 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败

node.js - SOLVED Sequelize 在使用聚合函数时获取另一列的数据

sql - 如何检查ssis中的列结构?

deployment - Erlang/OTP 生产应用部署简介

javascript - OnClientClick 调用两个函数

asp.net - Razor & null 传播 - 在显式 C# 6 MVC 5 项目下不工作

node.js - 如何使用 npm 包进行部署

eclipse maven项目部署报错

ASP.NET MVC3 : Connected clients count