Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Sql server 如何将开发人员数据库更改移动到生产数据库?_Sql Server_Database - Fatal编程技术网

Sql server 如何将开发人员数据库更改移动到生产数据库?

Sql server 如何将开发人员数据库更改移动到生产数据库?,sql-server,database,Sql Server,Database,我一直在做一个项目,并通过了第一阶段。然而,需求最终发生了变化,我不得不添加新的表,并在数据库中重做一些外键引用 我遇到的问题是,一旦我在dev数据库上完成了开发,我就不知道如何处理对登台然后生产数据库的这种更改 迁移数据库模式更改和维护数据库中的数据有哪些策略 据我所知,这项工作就是打开SQLServerManagementStudio并开始手动添加表。我知道这可能是一种不好的方法,因此,在意识到自己可能一开始就错了的情况下,寻找如何正确地进行操作。我通常使用类似的方法来生成更改的SQL脚本。

我一直在做一个项目,并通过了第一阶段。然而,需求最终发生了变化,我不得不添加新的表,并在数据库中重做一些外键引用

我遇到的问题是,一旦我在dev数据库上完成了开发,我就不知道如何处理对登台然后生产数据库的这种更改

迁移数据库模式更改和维护数据库中的数据有哪些策略


据我所知,这项工作就是打开SQLServerManagementStudio并开始手动添加表。我知道这可能是一种不好的方法,因此,在意识到自己可能一开始就错了的情况下,寻找如何正确地进行操作。

我通常使用类似的方法来生成更改的SQL脚本。这是一个相当简单和容易的方法。该工具的主要缺点是,生成的表将删除并重新创建未更改但由已更改的过程使用的表(我不理解为什么),因此需要一些手动劳动来检查脚本并删除不需要的内容


注意您不需要下载并安装此工具;您可以从VisualStudio中启动它。右键单击服务器资源管理器中的连接,并在上下文菜单中选择“发布到提供商”。

有一些工具可帮助您完成此操作

如果您有VisualStudioTeamEdition,请检查数据库项目(又名DataDude又名VisualStudioTeamforDatabaseProfessionals)和

它允许您从dev/integration数据库生成模型,然后(对于许多情况,但不是所有情况)自动创建脚本,用您对dev/integration所做的更改更新prod数据库


对于VS2008,请确保您获得了GDR2补丁。

您必须拥有一个称为“工具包”的东西。显然,如果要维护某种源代码管理,那么在开发环境中所做更改的所有脚本都应该在源代码管理配置工具中维护

一旦您完成了所有您认为可以转移到下一个更高环境的脚本/更改。准备工具包时,将所有这些脚本放在文件夹中(理想情况下分类为过程、表、函数、引导),然后使用OSQL命令行实用程序以特定顺序在工具包中执行这些脚本的批处理文件

为UAT/Staging/production提供单独的批处理文件,这样您就可以双击批处理文件,在适当的服务器上执行工具包。检查OSQL选项


这样,您的所有环境都是同步的

您可能想查看像Liquibase这样的工具:

我们发现推动更改的最佳方法是将数据库更改视为代码。所有更改都在脚本中,它们在源代码管理中,并且它们是版本的一部分。在任何情况下,都不会将任何未编写脚本且未在源代码管理中的内容推送到prod。这样,您就不会意外地将dev中的更改推送到prod。此外,您还可以将prod数据恢复到dev框中,并重新运行所有尚未推送到的脚本,从而保留新的数据和所有dev工作。当您对不需要更改的表具有查找值时,这也非常有效;我不想在其他东西也移动之前被推着去戳。编写插入脚本并将其与版本的其余代码放在一起


使用这些工具进行比较,看看脚本中是否遗漏了一些内容,这很好,但我永远不会单独依赖它们。将“尚未准备好进入黄金时段”的内容推向生产的风险太大。

红门SQL比较和SQL数据一路比较。自从我的公司购买了它,它为我节省了大量的时间,从开发到测试再到验收再到生产

您还可以让它与脚本文件夹同步,以便在源代码管理系统中轻松集成


要维护您可以使用的架构更改,请使用SQL Server和SQL Azure架构比较和同步工具;要维护您可以使用的数据库中的数据,请使用SQL Server和SQL Azure数据比较和同步工具

希望这有帮助


免责声明:我作为支持工程师为ApexSQL工作

一个好的数据库设计工具(如Sybase Powerdesigner)将允许您创建数据模型的设计更改,然后生成代码来实现这些更改。然后,您可以根据自己的选择存储和运行代码。当您继承未构建的数据库时,此工具还应该能够执行反向工程


即使在一个有组织、有良好文档记录的环境中,也很难找到开发和生产之间的所有变化。Idera有一个用于SQL Server的工具,可以检测开发和生产数据库之间的结构差异,还有一个工具可以检测数据中的更改。事实上,我经常使用这些来实现另一个方向,并将开发与生产同步,以启动一个新项目。

您可以使用visual studio 2015。转到工具=>SQL server=>新架构比较

步骤1)选择目标数据库。 单击比较选项

步骤2)比较完成后,您可以单击图标生成脚本(Shift+alt+G)

这将生成提交脚本


步骤3)要为数据库更改生成回滚脚本,只需从步骤1

交换数据库,这似乎是一个不错的选择,因为它允许您进行更多增量更改,并确保您知道发生了什么。我将此脚本标记为答案,因为这是h