我们要清理数据库架构并删除/删除不再使用的对象。
我们怀疑未来某个时候我们会想要恢复删除的功能。
我们已经讨论了在版本控制中处理被删除对象的以下选项:
从源控件中删除.sql文件,一旦它们从数据库中消失,并依赖于版本历史记录来存储定义。我们对这种方法的关注是多年来的某些时候源控制将被移动,我们将失去历史。如果我们看不到所有掉落的物体,似乎很难知道要找到什么来恢复。
将.sql文件保留在源代码管理中,但将定义更新为" drop proc {someproc}"。通过这种方法,我们关注的是将对象保留在不再存在的版本控制中,以及如果vcs被移动则丢失历史的风险
为已删除的对象创建一个新的repo,并在从SQL Server中删除它们后将.sql文件迁移到此repo。
我们在Windows环境中工作,对于使用VCS进行数据库工作来说还是一个新手。目前GIT + SSDT。
目前,选项3是我们的首选方法。
答案 0 :(得分:2)
我在数据库代码中看到了很多,随着时间的推移,人们最终会在数据库中找到未使用或者不工作的东西(想想一个引用表并且表被修改但不是proc)。
要做的就是让所有内容都在源代码控制中(它看起来像你有),然后在删除它之前和之后创建所有代码的标记或分支,以便你可以恢复它。
通常情况下会发生两件事,要么代码真的从未使用过,要么在年底使用,当你发现时,世界即将落在你的头上,所以最好有一个快速的方法来恢复它。
当然,如果您有一整套测试,那么即使是年终过程也是安全的:)
我个人不会使用选项3,我只会将历史保留在主分支中,以便保留历史记录。
编
答案 1 :(得分:0)
有许多用于版本化数据库更改的好工具:你很有可能以“太宽泛”的理由关闭这个问题,但我会尝试建议
从你的选项列表中,它将比其他更多p.1(但是它在版本控制中将更改存储在数据库中,不是状态)
答案 2 :(得分:0)
请注意另一个选项,在SSDT中,您可以将文件属性标记为Build Action = None。选择此构建选项时,该文件不会包含在dacpac中。但我倾向于同意你应该依靠你的VCS处理历史的想法。