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

Ben*_*ter 6 sql sql-server sql-server-2005 sql-server-2008-r2

Backround:我的生产环境中运行了多个版本的应用程序.根据使用的用户帐户,用户可以访问不同版本的软件.

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

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

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

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

看来这是一个应该已经解决的问题,但我不知道我在寻找什么是可行的解决方案.

有没有人有任何想法?

cde*_*zaq 0

假设版本之间不存在向后不兼容的架构和数据更改,我会将所有应用程序逻辑移至应用程序代码中。一旦掌握了这一点,您就可以使用丰富的现有版本控制技术来部署应用程序的多个版本,这些版本都指向同一个数据库。

在许多情况下,尝试对存储过程进行版本控制是徒劳的,因为在大多数RDBM 系统中根本不需要访问代码。一般来说,存储过程被认为是一个潜在的好主意,而不仅仅是没有成功。

  • 我想对这个回应提出异议。存储过程的用途不仅仅是“应用程序逻辑”。它们用于提供一个底层,将数据库中存储的数据转换为对正在使用它的一个或多个应用程序有效的形式。无法将存储的过程/函数逻辑移至应用程序中。没有任何逻辑与应用程序相关。任何与应用程序相关的逻辑都已经存在。更不用说这种方法的安全性和性能影响。 (3认同)