1

我正在以外包开发人员的身份从事一个项目,我无法访问测试和生产服务器,只能访问开发环境。

要部署更改,我必须创建 sql 脚本,其中包含要在每台服务器上为我希望部署的功能所做的更改。

例子:

  • 当我对数据库进行每次更改时,我将脚本保存到一个文件夹中,但有时这还不够,因为我发送了一个脚本来更改视图,但忘记包含我在另一个功能中创建的新表。

  • 另一种情况是通过 SSMS GUI 更改表并忘记使用更改的列或新列创建脚本,之后必须发送脚本来更新测试中的表。

由于可以将某些功能发送到测试,而将其他功能直接发送到生产环境(例如:提供 excel 文件的查询),因此很难跟踪我必须发送到每个环境的内容。

由于部署团队只是执行我发送给他们的脚本来更新数据库,我如何在没有比较工具的情况下管理/跟踪对 sql server 数据库的更改?

[编辑]

我目前使用的工具是 SSMS、VS 2008 Professional 和 TFS 2008。

4

3 回答 3

1

我可以告诉你我们 xSQL Software 是如何使用我们的工具做到这一点的:

  • 部署团队有一个自动化流程,该流程获取暂存和生产数据库的模式快照,并每晚将快照转储到开发团队可以访问的共享上。
  • 每天早上,开发人员都有可用的生产和暂存数据库的最新模式快照。他们使用我们的模式比较工具将开发数据库与暂存/生产快照进行比较并生成更改脚本。

注意:要获取架构快照,您可以使用架构比较工具或我们的架构比较 SDK。

于 2013-12-12T15:31:17.783 回答
0

我想说您可以将测试和生产服务器的结构副本作为额外的开发数据库,​​并记住在发送内容时始终应用更改。

在这些数据库上,您可以建立触发器来捕获所有 DDL 事件并将它们放入附有 getdate() 的表中。有了它,您应该能够很容易地处理更改,并且一些简单的比较也将更容易应用。

于 2013-09-20T14:25:33.113 回答
-1

专门查看 SQL 格式的 Liquibase,看看它是否能满足您的需求。我将它用于我们的数据库,它很棒。

您可以将所有对象存储在单独的脚本中,但是当您执行 Liquibase“构建”时,它会生成一个包含所有更改的 SQL 脚本。真正重要的部分是让您的 Liquibase 配置以正确的依赖顺序放置对象。例如,在外键约束之前创建表。

http://www.liquibase.org/

于 2013-09-20T14:41:20.433 回答