Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 Visual Studio数据库项目回滚脚本_Visual Studio 2010_Rollback_Database Project - Fatal编程技术网

Visual studio 2010 Visual Studio数据库项目回滚脚本

Visual studio 2010 Visual Studio数据库项目回滚脚本,visual-studio-2010,rollback,database-project,Visual Studio 2010,Rollback,Database Project,我正在使用VisualStudio2010中的数据库项目生成一个脚本来部署我的数据库(及其更改)。这很有效 是否有方法让VisualStudio数据库项目生成回滚脚本和部署脚本 我不希望在部署时回滚事务;但是,假设我部署了它,并且我的存储过程有一个被忽略的性能问题,这一问题在一周后出现,需要回滚到以前版本的数据库 是否有一种方法可以在构建/部署时生成回滚脚本,该脚本将撤消部署脚本所做的任何更改 编辑:如果我们忽略我正在使用数据库项目:生成数据库的升级和降级路径的好方法是什么? 这一代需要成为自动

我正在使用VisualStudio2010中的数据库项目生成一个脚本来部署我的数据库(及其更改)。这很有效

是否有方法让VisualStudio数据库项目生成回滚脚本和部署脚本

我不希望在部署时回滚事务;但是,假设我部署了它,并且我的存储过程有一个被忽略的性能问题,这一问题在一周后出现,需要回滚到以前版本的数据库

是否有一种方法可以在构建/部署时生成回滚脚本,该脚本将撤消部署脚本所做的任何更改

编辑:如果我们忽略我正在使用数据库项目:生成数据库的升级和降级路径的好方法是什么?

这一代需要成为自动化构建过程的一部分。

我从未见过类似的情况

我认为您需要重新考虑这种方法,因为您仍然需要修复数据库项目中存储的proc,否则您将在下次部署时重新部署“坏”版本。(我相信你已经意识到了这一点,但有时指出显而易见的事实也无济于事!)


如果同时需要将存储过程的旧版本恢复到服务器上,我认为最简单的方法是从源代码管理获取以前的版本并手动部署。

要在使用VS2010进行架构比较时创建回滚脚本,这与交换源和目标中指定的db名称一样简单


通过这种方式,VS2010将创建一个回滚脚本,其中包含针对存储过程的drop语句。

您可以在发布之前创建数据库备份,然后在出现问题时从备份中恢复。显然,在备份完成后,您也会丢失任何数据更改(无论是作为发布的一部分还是随后进行的更改)


我的另一个想法是在发布之前创建一个快照。创建快照的操作非常简单。我不确定您是否希望将快照保留一周,但如果发布出错,那么我认为从快照进行恢复比从完整备份进行恢复更快。我很想听听人们对这个想法的看法。

存储过程只是一个例子。无论出于何种原因,它都可能需要回滚。在某些情况下,可以部署“热修复程序”,而在其他情况下,可能无法很好地实现这一点。(我不是DB的人,所以我的示例缺乏复杂性)好的,这很好,但我不确定回滚脚本是否总是有效的,或者在没有人工干预的情况下是否容易生成。例如,在以前的项目中,我们需要在预部署阶段将数据迁移到新的数据库结构。这使我们在部署新的数据库结构时不会丢失数据。为了回滚这些类型的更改,您必须手动编写一个脚本来反转迁移。但是,如果您确实想继续执行这类操作,您可以在部署之前使用架构比较工具生成一个反向差异脚本。(即从项目到数据库)。然后,如果需要逆转任何更改,您可以将其用作基线脚本。FluentMigrator支持此概念(听起来比VS好得多)。我还没有详细研究过这一点,因此可能很明显:这可以在自动化过程中完成吗?