问题描述
我知道这可能是我想到的逻辑混乱,但场景是我有一个网站,该网站有 8 个多个副本,同一网站具有相同的数据库架构,但发布在同一服务器的不同位置。
我的问题是我有大约 50 个存储过程(每个数据库),那么我该怎么做才能使维护更容易?
每次修改一个存储过程都要修改8处吗?每次发布操作时,我要更改 web.config
文件 8 次吗?
我正在考虑制作一个简单的 CMS 系统,我将存储发布目录并单击按钮将所有项目发布到选定的目录,但我仍然有一个问题,即存储过程?第一次发布时,我想在第一次发布时更改整个存储过程。
欢迎提出任何建议,现在我只有一份副本,您知道做出决定后很难维护。
顺便说一句,该网站是 ASP.NET Web Forms,但我可以将其移植到任何新的 .NET Web 技术,如 MVC 或 .NET Core。
解决方法
如果您可以完全控制托管,那么 Dai 建议的“多租户数据库设计”将是更好的方法。但是,如果情况需要多个实例,那么您可以执行以下操作:
-
在您的数据库中存储一个版本号,以便您知道哪些脚本已运行,哪些尚未运行。
-
编写任何架构更改(包括任何存储过程)的脚本,可能是种子数据,和包括新的数据库版本号。
-
将脚本存储在网站下的目录中。
-
有一个维护程序(手动或自动),通过比较版本号来运行任何以前没有运行过的新脚本。