如何在MS SQL Server 2005中分离编程逻辑和数据?

Gur*_*ngh 6 database sql-server

我正在开发一个数据驱动的网站,很多编程逻辑都存在于数据库存储过程和数据库函数中.为了修复错误或添加新功能,我发现自己更改了存储过程/功能.数据(表格)基本保持不变.

我遇到的问题是跟踪存储过程/函数的版本.目前,当我进行一组更改时,我正在增加整个数据库的版本.由于数据量很大(10 Gb),因此我不得不同时运行开发版本和发布版本的数据库.

我希望将所有存储过程和函数放在一个数据库中,并将数据保存在一个数据库中,以便我可以更好地管理更改.

我相信其他人会遇到类似的建议和请求建议如何最好地处理这种情况.

Tom*_*vic 1

您可以仅对架构转储进行版本控制。结合源代码控制关键字扩展(如 Rawheiser 的建议),您只需查看数据库中的版本,生成差异并应用它。

此外,还有一些优秀的工具可以比较数据库及其架构、生成 DDL 脚本等:SQL Workbench、Power Architect、DDLUtils 和 Redgate SQL Compare 等。SQL Compare 可能最适合与 SQL Server 一起使用,尽管所有其他都是 FOSS 并且提供更高的 ROI(就学习时间和可以使用它们执行的操作而言),因为它们独立于平台和 RDBMS。

最后,我不得不说...我知道通过数据库中的逻辑获得的直接结果很诱人,但是如果您超出了数据库中的几个过程,那么您就为自己做好了准备相当多的痛苦,筛选那些容易变成意大利面条代码的东西,并将你的应用程序锁定到单个数据库供应商。你可能有你的理由,但我去过那里,但不太喜欢它。逻辑可以很好地存在于不同的层中。