2

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

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

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

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

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

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

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

4

3 回答 3

2

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

于 2013-09-09T19:19:50.097 回答
1

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

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

于 2013-09-09T19:51:53.003 回答
0

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

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

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

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

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

于 2013-09-09T19:06:49.033 回答