我负责数据库。 它有大约126个sprocs,大约20个视图,一些UDF。有一些表格可以为我们的各种应用程序保存固定的配置数据。如何管理SQL源代码?
我一直在使用包含IF EXIST ... DELETE GO CREATE PROCEDURE ...的一个大文本文件...用于配置脚本的所有sprocs,udfs,视图和所有插入/更新。
随着时间的推移,新的sprocs被添加,或现有的sprocs被改变。
最大的错误(据我所知)我在创建这个BIG单个文本文件时所做的是在文本文件的开头使用新/更改的sprocs代码。但是,我忘了排除以前的新代码/更改的sprocs代码。让我们说明这一点:
说我的大脚本(1版)包含的脚本来创建存储过程
sp 1
sp 2
sp 3
view 1
view 2
的DATABSE的版本表获取与版本更新1.
现在有在SP的某些变化2.因此,最大的脚本的版本2现在是:
sp2 --> (newly added)
sp1
sp2
sp3
view 1
view 2
所以,很显然运行BIG脚本版本2将不会更新我的SP 2
我很晚才意识到这与100多个sprocs。
补救措施:
我创建了一个文件夹结构。每个sproc/view的一个子文件夹。
我已经浏览了bgeinning的BIG脚本的最新版本,并将所有脚本的代码放到了相应的文件夹中。一些脚本在BIG脚本中不止一次地重复。如果有多于一个代码块用于创建特定的存储过程,我会将该早期版本放入另一个称为“旧”的子文件夹中。幸运的是,我总是记录了我对所有sprocs/view等所做的所有更改 - 我记下了日期,版本号以及作为备注存储在代码中的更改的描述。当存在多个代码块时,这帮助我了解了sprocs的最新版本代码。
我创建了一个DOS批处理过程来连接所有单独的脚本来创建我的BIG脚本。我曾尝试使用.net streamreader/writer与编码和“£”符号混淆。所以我暂时坚持DOS批处理。
有什么办法可以改善整个过程吗? 目前,我正在通过某种方式记录BIG脚本的版本以及其各个sproc版本。例如,我喜欢有一些文件的方式
Big Script (version 1) contains
sp 1 version 1
sp 2 version 1
sp 3 version 3
view 1 version 1
view version 1
Big script (version 2) has
sp 1 version 1
sp 2 version 2
sp 3 version 3
view 1 version 1
view 2 version 1
欢迎任何反馈意见。
你为什么还要继续与大脚本斗争?使用Big Script创建什么价值?为什么大脚本如此重要?请更新您的问题,为大脚本提供一些理由。 – 2009-02-22 19:53:03
当我开始时,我有一个BIG脚本和数据库。该公司正在为最新的客户提供最新的数据库,以及BIG脚本来让客户更新他们的旧数据库。 如果有更好的方法来帮助我摆脱这个BIG脚本,我肯定会这样做。 – ahmjt 2009-02-25 22:55:46