gpt4 book ai didi

sql - 如何针对同一数据库运行应用程序的多个版本?

转载 作者:行者123 更新时间:2023-12-02 00:31:23 24 4
gpt4 key购买 nike

背景:我的生产环境中运行着多个版本的应用程序。根据所使用的用户帐户,用户将有权访问不同版本的软件。

环境:当前为 SQL Server 2005,即将迁移到 SQL Server 2008、ASP.Net

问题:每个版本的软件可能会也可能不会使用与数据库中的数据交互的不同版本的存储过程。目前,当版本更改时,无论谁更改,都会创建一个新副本,并将增量版本号附加到末尾。此时,我们有一些存储过程的多个版本,而其他存储过程只有一个版本,没有人确定应用程序的哪个版本指向存储过程的哪个版本 - 这是一团糟。

我正在寻找一种解决方案,可以将任何给定版本的应用程序的存储过程整齐地打包起来,以用作新版本的基础。这意味着应用程序的新版本可以指向新的一组过程,这些过程可以重写或修改为最终用户的内容,而不会影响当前生产中可用的应用程序的其他版本。

我最初考虑过模式,但问题的一部分是过程与其他过程和用户​​定义的函数紧密耦合,因此当复制到另一个模式时,我们需要映射和替换所有这些链接,这些链接不是并不理想。

这似乎是一个应该已经解决的问题,但我不知道我在寻找什么才能找到可行的解决方案。

有人有什么想法吗?

最佳答案

鉴于您描述的困惑情况,如果您必须坚持使用存储过程,我倾向于只拥有每个存储过程的一份副本,但让所有存储过程都将 versionNumber 作为最终参数。然后,每个存储过程都有一个名称,并且任何特定于版本的代码都存在于与其相关的存储过程的上下文中。没有版本特定代码的存储过程只是忽略该 versionNumber 参数(但仍然在其签名中包含它)。

在你目前的情况下,我看到的一个大问题是,如果一个存储过程有 4 个几乎相同的版本,并且有人修复了其中一个的错误,那么很容易忘记在其中进行相同的修复所有其他版本。我描述的解决方案至少会减少重复代码的数量,并减少仅修复存储过程的一个版本的错误修复的机会。

但在这种情况下,我也会强烈要求将应用程序版本特定的逻辑从数据库中取出并放入代码库中,并将特定于数据但与应用程序无关的逻辑留在数据库中。

关于sql - 如何针对同一数据库运行应用程序的多个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8929944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com