【问题标题】:What's the best version neutral method for deploying a SQL Server database?部署 SQL Server 数据库的最佳版本中立方法是什么?
【发布时间】:2013-09-09 19:02:34
【问题描述】:

在我的开发机器上,我总是运行最新版本的 SQL Server。我经常将数据库从我的开发箱部署到实时/暂存区域以进行审查或测试。我已经这样做了很多次,这一直是一个痛苦的过程,但我意识到我需要找到一种更简单、更可靠和一致的方式来执行这个基本操作。

我通常将 WebMatrix 纯粹用于部署,它运行良好,但由于某种原因,我在让它在我的服务器上运行时遇到了问题。因此,我正在寻找替代解决方案。

创建一个 SQL 转储文件可能会奏效,但这不是一个可接受的解决方案,因为数据库包含图像并且很容易超过 2 GB 的数据,这将永远持续下去。

由于架构副本不完整、身份插入和检查存在问题,导入/导出实用程序失败。针对这些问题提供的解决方案在我的特定情况下无法正常工作。

由于 SQL Server 2008 和 2012 之间的一些奇怪的不兼容,备份和还原方法也失败了。SQL Server 2008 Management Studio 在 2012 数据库的还原过程中引发异常。发生这种情况很奇怪,即使我将数据库的兼容性设置为 2008 版本。

我没有尝试过分离、复制和重新附加文件的方法,但我没有尝试过,因为它可能会因为与备份和恢复方法相同的原因而失败。

还有其他选择吗?此外,为什么对于一项如此普遍和重要的任务而言,尤其是在 2013 年的今天,这会如此困难?获得真正的微软!

【问题讨论】:

  • 您应该尝试将数据库兼容级别降低到100,然后使用分离/复制/附加方法。
  • 兼容性级别只限制了新版本中可供您使用的功能;但它确实 NOT 可以在 2008 服务器上恢复 2012 数据库。这不能完成 - 文件的内部结构太不同了。

标签: sql sql-server sql-server-2008 sql-server-2012 localdb


【解决方案1】:

通过采用 RedGate 的工具,我们改变了在服务器、实例和版本之间部署和移动数据库的方法。它们很贵,但值得恕我直言。

【讨论】:

    【解决方案2】:

    我的团队为 ~everything 创建脚本。 数据库创建、更改、插入等 我们编写所有脚本,在尝试创建它们之前检查它们是否存在。 又名,我们可以一遍又一遍地运行脚本并获得相同的结果。

    我们使用SqlCmd.exe部署到不同的环境。

    编辑

    见:

    http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-stored-procedures-and-the-like.aspx

    http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx

    =============

    如果这“太过分”,那么我同意另一张海报,RedGate 是你的朋友。

    【讨论】:

      【解决方案3】:

      除了以下几点,您是否考虑过 VS2012 中的数据库项目?它们允许您编写所需的表、sp、触发器、用户等脚本,生成 sql cmd 脚本,进行更改和架构比较以及版本控制您的数据库代码,我当然会推荐它

      “创建一个 SQL 转储文件可能会起作用,但它不是 可接受的解决方案 数据库包含图像并且很容易超过 2 大量数据,这将永远需要。”

      为什么会出现这个问题?您是从哪里传输文件到哪里以及通过什么连接传输文件?

      “备份和还原方法也由于一些奇怪的原因而失败 SQL 2008 和 2012 之间的不兼容性。 SQL 2008 管理 Studio 在 2012 的还原过程中引发异常 数据库。发生这种情况很奇怪,即使我设置了 数据库与 2008 版本的兼容性"

      如果文件是在还原之前于 2008 年创建的,这应该不是问题。如果您在 2008 实例中创建一个新数据库,然后从中进行备份并将其还原到具有 2008 兼容性的 2012 实例,那么您应该能够在那里使用它,从 2012 实例备份它并再次还原到 2008之后。

      【讨论】:

      • 兼容性级别只限制了新版本中可供您使用的功能;但它确实 NOT 可以在 2008 服务器上恢复 2012 数据库。这不能完成 - 文件的内部结构太不同了。
      • 对不起,我的错误,我想在 2008 年创建,以 2008 模式恢复到 2012 年,然后往返该文件。
      • @dougajmcdonald - 不,一旦数据库恢复到 2012 实例,它在结构上就是 2012 数据库文件。在那之后没有任何东西可以使它再次与 2008 实例兼容。
      • 嗯,这让我觉得很痛苦,因为我认为它在 2008 年曾经奏效(需要引用!)
      • 将 SQL Server 备份从较新版本恢复到较旧版本从未工作过 - 无论兼容性级别等如何。内部文件格式太不同了...
      猜你喜欢
      • 2011-08-08
      • 2010-09-18
      • 2020-05-13
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 2010-12-08
      相关资源
      最近更新 更多