【发布时间】:2015-11-03 21:45:41
【问题描述】:
我正在寻找数据库补丁脚本遵循的模式。我们遇到了客户不运行补丁、或以错误的顺序运行补丁、补丁失败等问题,我们希望能够克服这些问题。我们正在使用 SqlServer 和 Oracle,但如果可能的话,我想要一些技巧来使脚本 db 不可知。
我认为我所追求的是一个防白痴脚本,我们可以重新运行它而不会创建重复的条目,并且如果它在中途失败也不会留下任何痕迹。例如像这样:
INSERT INTO auditTable (scriptName, txt, dt) VALUES "$nameOfScript$" "starting", $date.now$
begin transaction
check auditTable to see if script has not already been run successfully?
upserts? (insert into ... where not exist)
INSERT INTO auditTable (scriptName, txt, dt) VALUES "$nameOfScript$", "completed ok", $date.now$
commit transaction
在我看来,这可能是众所周知的基础,我应该复制一些模板,有吗?
【问题讨论】:
标签: sql-server database oracle