部署 SQL Server 数据库的最佳版本中立方法是什么?



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

我通常纯粹使用 WebMatrix 进行部署,它工作正常,但由于某种原因,我在让它在我的服务器上工作时遇到了问题。因此,我正在寻求替代解决办法。

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

导入/导出实用程序由于架构副本不完整、标识插入和检查的问题而失败。为这些问题提供的解决方案在我的特定情况下不起作用。

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

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

还有其他选择吗?另外,为什么对于一项如此普遍和重要的任务来说,尤其是在2013年的今天,这如此难以置信? 获得真正的Microsoft!

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

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

我们使用 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是你的朋友。

撇开以下几点不谈,您是否考虑过VS2012中的数据库项目? 它们允许您编写所需的表,SP,触发器,用户等脚本,生成SQL CMD脚本,进行更改和模式比较以及版本控制数据库代码,我当然推荐它

"创建SQL转储文件可能会起作用,但它不是 可接受的解决方案 数据库包含图像并且很容易超过 2 个 需要很长时间的数据演出。

为什么这是一个问题?您在哪里传输文件,以及通过

什么连接传输文件?

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

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

最新更新