0

我的开发机器上只有 SQL Server 2008(开发版)

我的托管公司只有 SQL Server 2005 可用(而且我没有直接连接到此数据库的访问权限)

我只是想知道最好的方法是什么:

  1. 将初始数据库结构和数据投入生产。
  2. 并在将来保持任何结构更改/数据更改同步。

据我所见...

  • 复制 - 不是一个选项,因为我无法连接到生产数据库。

  • 恢复备份 - 不是一个选项,因为据我所知,您无法从 2008 年导出可在 2005 年恢复的数据库(即使 2008 数据库设置为 2005 兼容模式),恢复生产也没有意义无论如何,在我的开发版本之上。

  • 从我的 2008 数据库中转储所有脚本,从 2008 -> 2005 将我的开发恢复到机器,然后从脚本重新创建数据库,然后只需使用备份和恢复将初始数据库投入生产,然后通过 Web 面板从从那时起

  • 从我的 2008 数据库中转储所有脚本,并从生产中的脚本生成整个 2005 数据库。然后从那时起通过 Web 面板运行脚本

  • 使用最后两个选项,我可能还需要使用一些工具(我认为网络上存在)编写所有数据插入的脚本

有没有我没有考虑的其他可能的解决方案。

4

3 回答 3

5

安全的选择是将您的开发环境恢复为 SQL 2005,因为这样无论您的代码与您的托管环境兼容。您应该能够在您的盒子上安装一个单独的 2005 实例,这应该可以节省时间(出于性能原因,一次只有一个 2005/2008 处于活动状态)。要进行此配置,您可能必须卸载 2008,然后安装 2005 实例,然后安装 2008 实例。

关于数据,您可能需要查看 BCP 实用程序,用于将数据复制进和复制出数据库。一旦掌握了窍门,它就非常快捷方便。

于 2010-03-30T15:40:20.657 回答
3

您可以在您的开发机器上同时运行 2005 和 2008 实例(实际上每个实例的多个实例)(正如您所提到的,您还可以在 2008 中以 2005 兼容模式运行数据库,这实际上只对禁用语法功能有用)。我会推荐这个,因为你说你有能力将你的安装恢复到 2005 - 只需并排运行。

因此,您可以从您的主机备份和恢复到您的开发机器,然后使用任意数量的数据库比较工具(例如 Red Gate SQL Compare 或 ApexSQLDiff)来比较您的开发机器上的 2005 和 2008 数据库并生成更改脚本以供使用在开发中测试,然后应用于生产。

于 2010-03-30T15:39:23.697 回答
3

那是因为您的开发交付物是数据库 MDF 而不是脚本源。战斗已经失败。除了部署初始引擎版本的差异之外,当您尝试部署应用程序的第一个更新时,您还会遇到更多问题。您会发现自己试图将模式的增量应用到生产中,这不是一件容易的事。您可能最终会使用 SQL Compare 之类的工具或类似的工具。即使是现在,当您拥有 1(一个)开发人员和 1(一个)生产服务器时也是如此。随着您将更多开发人员或更多部署添加到组合中,情况会变得越来越糟。

但是还有更好的方法。

一种方法是使用基于源代码的开发工具,例如 Visual Studio Database Edition。VSDB 项目的可交付成果是一个 .dbschema,可以使用vsdbcmd工具将其作为差异增量部署到生产环境中。

更好的方法是通过从 v. N 到 v. N+1 的升级脚本来版本化您的模式并部署所有内容。请参阅版本控制和您的数据库

除了可管理的部署路径之外,这两种方法都提供了数据库架构更改的源代码控制版本。

确实,即使使用基于脚本的方法,您最终也可以在脚本中使用 2008 年的功能,并且在部署时会有惊喜,像 VSDB 这样的工具实际上可以在构建/编译期间捕获这些功能。即使您确实犯了错误,也很容易通过修改脚本来恢复,而不是从头开始在正确降级版本的新空数据库上。

于 2010-03-30T16:07:12.400 回答