gpt4 book ai didi

sql - 如何管理 SQL 源代码?

转载 作者:行者123 更新时间:2023-12-05 00:43:58 25 4
gpt4 key购买 nike

我负责一个数据库。
它有大约 126 个存储过程,大约 20 个 View ,一些 UDF。有一些表为我们的各种应用程序保存了固定的配置数据。

我一直在使用一个大文本文件,其中包含 IF EXIST ...DELETE GO CREATE PROCEDURE... 用于配置脚本的所有 sproc、udf、 View 和所有插入/更新。

随着时间的推移,添加了新的存储过程,或者更改了现有的存储过程。

我在创建这个 BIG 单个文本文件时犯的最大错误(据我所知)是在文本文件的开头使用新/更改的 sproc 的代码。但是,我忘记排除新/更改的存储过程的先前代码。让我们来说明这一点:

假设我的 BIG 脚本(版本 1)包含创建 sprocs 的脚本

sp 1
sp 2
sp 3
view 1
view 2

数据库的版本表使用版本 1 进行更新。

现在 sp 2 有一些变化。所以 BIG 脚本的版本 2 现在是:
sp2 --> (newly added)
sp1
sp2
sp3
view 1
view 2

因此,显然运行 BIG 脚本版本 2 不会更新我的 sp 2。

我有点晚意识到这一点,有 100 多个 sprocs。

补救措施:
  • 我创建了一个文件夹结构。每个 sproc/view 一个子文件夹。
  • 我已经从 bgeinning 浏览了最新版本的 BIG 脚本,并将所有脚本的代码放入各自的文件夹中。有些脚本在 BIG 脚本中重复多次。如果创建特定存储过程的代码块不止一个,我会将早期版本放入该存储过程的文件夹中另一个名为“old”的子文件夹中。幸运的是,我一直记录我对所有 sprocs/view 等所做的所有更改——我记下日期、版本号和所做更改的描述,作为 sproc 代码中的注释。当存储过程有多个代码块时,这有助于我找出存储过程的最新版本代码。
  • 我创建了一个 DOS 批处理来连接所有单独的脚本来创建我的 BIG 脚本。我尝试使用 .net 流读取器/写入器,它与编码和“£”符号混淆。所以我暂时坚持使用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

    欢迎任何反馈。

    最佳答案

    你看过Visual Studio Team System Database Edition (现在折叠成开发者版)?

    它将做的一件事是允许维护 SQL 以构建整个数据库,然后仅应用更改以将目标更新到新状态。我相信它还会在给定引用数据库的情况下创建一个脚本,以将与引用模式匹配的数据库带到当前模型(例如,在开发人员无法访问生产的情况下部署到生产)。

    关于sql - 如何管理 SQL 源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/572866/

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