![]() |
1
2
我们使用它来创建DB脚本,我必须再次运行它以确保它首先创建依赖对象…但我还没遇到什么问题。 http://www.red-gate.com/products/SQL_Compare/index.htm |
![]() |
2
2
我的答案会有点复杂,只有编写整个数据库的脚本(即,将所有内容都保存在SQL脚本中)它才能工作。我们在一个大型项目中所做的就是将脚本组织成以下结构:
文件夹名当然是我们的随机选择,你可以总是安排不同的事情。之后,我们创建了一个批处理脚本,按照以下顺序将所有这些文件合并到一个SQL中:
关键的技巧是以一种可以运行一千次的方式编写脚本。这意味着:在创建过程之前删除过程,在创建前检查表是否存在,在静态添加前检查行是否存在,等等。 这并不完美,但能完成任务。 |
![]() |
3
1
解决排序问题有一种天真但却出奇有效的方法:继续运行每个脚本。单个脚本最终将工作(在其他脚本首先运行之后)或脚本失败(在这种情况下,它是一个坏脚本)。你也许可以更快/更容易地发现一个坏脚本——但我从来没有必要这样做。 如果你有一个巨大的脚本,它可能会被go语句分割。只要有唯一的go语句,就应该足够多次运行它。创建已经存在的对象的任何尝试都将失败,并中止批处理。下一批将不间断地运行。最终,您将创建必要的对象——重新运行整个脚本将创建依赖对象(并在已创建的独立对象上失败)。但是,如果没有错误,脚本将永远无法运行。 如果你想更进一步,你可以把这个巨大的脚本分成单独的批,然后单独运行。现在,您可以跟踪需要什么订单才能让他们工作。只需按这个顺序重新组合它们,然后输出新脚本。它应该没有错误地运行。 或者,花500美元购买一个已经这样做的工具(Redgate、Visual Studio Ultimate/Database Edition等)。 |
![]() |
4
0
莱克特的方法很好。可以使用PowerShell脚本(或其他语言)连接这些脚本 运行脚本:
PowerShell脚本:
在这里,我删除了一个构建文件并删除了一些文件——我实际上正在将SQL本机加密应用于数据库,因此拆卸可能不适用。我把所有的脚本都放在一个目录中,所以我想您可能需要修改这个脚本来做一些递归。 |
![]() |
5
0
您可以在以下位置尝试XSQL对象: http://www.xsqlsoftware.com/Product/Sql_Schema_Compare.aspx 这对我很有用。只要有可能,脚本就以正确的顺序创建(有些情况下,生成的脚本不能直接执行,但在大多数情况下,它是有效的) |
![]() |
blogger13 · 视频租赁店数据库的规范化 4 月前 |
![]() |
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 5 月前 |
![]() |
relatively_random · 确保两个表之间一致的共同参考 5 月前 |
|
Grenish Rai · Firestore错误“用户文档不存在” 9 月前 |
![]() |
Saijo-Shi · PLpgsql中的更新触发器 9 月前 |
![]() |
Dante · Django::配置不当:池不支持持久连接 9 月前 |
![]() |
YouLocalRUser · 删除重复行,保留第一行 10 月前 |