问题

我目前正在为我们的数据库创建一个master ddl.历史上我们使用备份/恢复版本我们的数据库,而不是维护任何ddl脚本.模式相当大.

我目前的想法:

  • 将脚本分解为部分(可能在单独的脚本中):

    1. 表创建
    2. 添加索引
    3. 添加触发器
    4. 加上约束
  • 每个脚本都会被主脚本调用。

  • 我可能需要一个脚本暂时删除约束以进行测试
  • 模式中可能有孤立的表,我计划识别可疑的表.

有其他建议吗?

编辑:如果有人知道自动化部分进程的好工具,我们正在使用MS SQL 2000(旧,我知道).

  最佳答案

我认为基本的想法是好的。

首先构建所有表然后构建所有约束的好处是可以按任何顺序创建表.当我完成此操作时,我每个表有一个文件,我放入一个名为“Tables”的目录,然后是一个执行该目录中所有文件的脚本.同样,我有一个约束脚本的文件夹(这也是外键和索引),它在表构建后执行.

我将分隔触发器和存储过程的构建,并运行最后一个.关于这些的问题是它们可以在数据库上运行和重新运行而不会影响数据.这意味着您可以像普通代码一样对待它们.您应该在每个触发器和过程脚本的开头包含“如果存在....下拉”语句,以使它们可以重新运行.

所以顺序是

  1. 表创建
  2. 添加索引
  3. 加上约束

然后

  1. 添加触发器
  2. 添加存储过程

在我当前的项目中,我们正在使用MSBuild来运行脚本.有一些扩展目标,您可以获得它,允许您调用sql脚本.过去我使用了perl,也很好(和批处理文件......我不推荐 – 太有限了).

  相同标签的其他问题

sqlsql-serverschemaddl