代码之家  ›  专栏  ›  技术社区  ›  Nate CSS Guy

用于将模式更改从开发数据库移动到生产数据库的脚本

  •  1
  • Nate CSS Guy  · 技术社区  · 15 年前

    我想在关口阻止这一次。我有两个数据库服务器(DEV和PRD),我的数据库在DEV服务器上。我期待部署我的应用程序到PRD服务器v1。

    问题是这样的:假设两个月后,我准备发布我的应用程序v1.1,它引入了两个新视图、六个新字段(两个表中各有三个字段)和一个更新版本的存储过程,该存储过程使用新字段在表中创建记录。我的DEV数据库有新的模式,但是我的PRD数据库有真实的数据,所以我不能简单地复制.mdf文件,因为我想保留我的PRD数据,但是包括我的新模式。

    我了解通过保存的.sql文件进行表、视图、存储过程的初始创建;但我想知道的是,是否可以使用SSMS来创建适当的“altertable”脚本,或者我需要手动执行此操作?

    4 回复  |  直到 15 年前
        1
  •  1
  •   Rawheiser    15 年前

    我已经用一个release update SQL脚本处理了这个问题,该脚本将更改应用于以前的版本。

    您要么自己编写代码,要么使用众多DBA工具中的一个来进行数据库比较并生成diff脚本。

        2
  •  1
  •   SQLMenace    15 年前

    SQL Compare 是其中之一,也是我最喜欢的

    否则,您必须自己编写这些代码,并且在重新创建过程时不要忘记编写权限脚本(除非在这种情况下使用ALTER proc保留权限)

        3
  •  1
  •   HLGEM    15 年前

    由于您的数据库更改应该在受源代码管理的脚本中进行,所以您只需使用要移动到prod的版本加载它们,就像任何其他与该版本相关联的代码一样。在任何情况下都不会使用用户界面对dev(或任何其他)数据库进行更改。

        4
  •  0
  •   blorkfish    15 年前

    尝试在DBSourceTools中找到的修补引擎。
    http://dbsourcetools.codeplex.com
    DBSourceTools是一个帮助开发人员在源代码管理下获取数据库的实用工具。
    只需将它指向一个源数据库,它就可以编写所有数据库对象的脚本,包括磁盘上的数据。
    一旦有了目标数据库(v1),就可以将修补程序脚本放到patches目录中,DBSourceTools将在重新创建数据库后按顺序运行这些修补程序。
    这是彻底测试更改脚本的非常有效的方法。