![]() |
1
0
通过 参数 正确地那你可以 定制 您的输出。
例如,要获得 元数据 对于用户中的所有表 斯科特 .
所以,这给了我 DDL公司 中的所有表 斯科特 模式。
类似地,您可以对所有其他对象(如
要获取文本文件中的DDL,只需使用 线轴,线轴 。因此,您只需要为不同的对象类型编写单独的脚本,以便在各自的文本文件中插入。 |
![]() |
2
0
简单的事实是,不能像对待Java、C#或其他文件那样对待数据库对象。 原因有很多,我将列举几个: 文件存储在开发人员的PC上,其所做的更改不会影响其他开发人员。同样,开发人员不受同事所做更改的影响。在数据库中,情况通常不是这样,开发人员共享相同的数据库环境,因此对数据库所做的任何更改都会影响其他人。 使用签入/提交更改等(取决于您使用的源代码管理工具)发布代码更改。此时,来自开发人员本地目录的代码被插入到源代码管理存储库中。想要获得最新代码的开发人员需要从源代码管理工具请求。在数据库中,更改已经存在,并影响其他数据,即使它未检入存储库。 在文件签入过程中,源代码管理工具会执行冲突检查,以查看在您修改本地副本期间,同一文件是否被其他开发人员修改并签入。同样,数据库中没有对此进行检查。如果您在本地PC上更改了一个过程,同时我用本地PC上的代码修改了相同的过程,那么我们将覆盖其他更改。 代码的构建过程是通过将标签/最新版本的代码放到一个空目录中,然后执行构建编译来完成的。输出是二进制文件,我们在其中复制&替换现有的。我们不在乎以前是什么。在数据库中,我们无法重新创建数据库,因为我们需要维护数据!此外,部署还执行在构建过程中生成的SQL脚本。 当执行SQL脚本(使用DDL、DCL、DML(用于静态内容)命令)时,您假设环境的当前结构与创建脚本时的结构相匹配。如果没有,那么当您尝试添加已经存在的新列时,脚本可能会失败。 将SQL脚本视为代码并手动生成它们会导致语法错误、数据库依赖性错误、不可重用的脚本,这会使开发、维护和测试这些脚本的任务变得复杂。此外,这些脚本可能运行在与您认为运行环境不同的环境中。 有时,版本控制存储库中的脚本与测试对象的结构不匹配,然后在生产中会发生错误! 还有很多,但我想你明白了。 我发现有效的方法如下: 使用对数据库对象强制执行签出/签入操作的强制版本控制系统。这将确保版本控制存储库与在签入操作中读取对象元数据时签入的代码相匹配,而不是作为手动完成的单独步骤 使用影响分析,该分析利用基线作为比较的一部分,以确定冲突,并确定更改(当比较源代码管理存储库和数据库之间的对象结构时)是源于开发的真实更改还是源于不同路径的更改,然后应跳过该更改,例如不同分支或紧急修复。 我就此写的一篇文章发表了 here ,欢迎您阅读。 |
![]() |
Prema kumari · 使用Oracle,如何恢复意外丢失的表? 8 年前 |
![]() |
Jown · 如何在触发器函数中排除DB列(Oracle) 9 年前 |
![]() |
Pravin Satav · 导出用于版本控制的数据库对象 10 年前 |
![]() |
sosytee · 修改主键使其成为复合键 11 年前 |