我在不同的服务器(开发和生产)上有两个数据库我需要将数据从dev移动到多个表的生产,而不会影响生产中预先存在的数据。不知道SQL Manager是否支持这样的东西,或者我是否必须为它编写脚本?
我的具体情况:
我有一个工具,可以让我为我的公司创建调查。该工具位于开发和生产上。由于我不想在我的生产数据库中添加测试数据,因此我使用该工具的开发版本来创建我的调查并在本地测试它们。该工具与我的数据库中的几个表相关联,例如调查,问题,答案,结果等。
我当前的设置:当我完成调查并准备启动时,我必须使用该工具的生产版本手动重做我以前在生产中所做的所有工作。这根本不理想,不仅因为我必须花时间去做,而且还冒着在手动复制过程中犯错误的风险。
我需要做什么: 我上面提到的那些表格中已经有生产数据,我们公司可以使用它们。当我创建一个新的调查时,我只需要将新调查的特定记录(从所有表格)从开发转移到生产,而不会影响我之前的任何调查。
答案 0 :(得分:3)
或者在DEVD服务器中将DEV服务器添加为链接服务器,然后使用INSERT / SELECT语句
答案 1 :(得分:3)
您可以使用数据库比较工具,对于SQL Server我使用SQL Delta,它允许您自动创建一个脚本以在您希望的数据库中运行,http://www.sqldelta.com/
答案 2 :(得分:1)
你不会为此找到任何开箱即用的解决方案,但有一些工具可以帮助你清楚地知道你想要完成什么 - 详细。在这一点上花了一点时间来确保你真正清楚你期望发生什么,当你转向生产时会产生巨大的回报。
您所描述的场景听起来就像您的数据库中包含一些配置类型的数据以及您的事务或域数据。换句话说,您需要将需要从开发环境升级到生产的更改才能使您的应用程序正常工作。这并不罕见,但是当您为这样的场景设置促销计划时,您必须非常谨慎和非常小心 - 毕竟,您不希望将测试数据一起推送到您的生产系统您的配置更改。因此,至关重要的是要确定您要从开发到推销的表格,并确保这些表格是您向该方向推进的唯一表格。
您还提到了“不影响已有的生产数据”。你能告诉我们更多关于这件事(也许是一个例子)吗?通常,您希望将特定表(按惯例)设置为仅在一个方向上移动更改 - 即从开发到生产。如果您有需要包含合并更改的表,那么您将不得不更加注意实现这一点,因为您需要处理合并错误 - 当您需要推送数据时会发生什么它已经存在于目标数据库中,例如?
一旦你有了实际想要移动的计划,其他答案中提到的一些工具可能会起作用,或者查看Redgate的工具(比如SQL Data Compare) - 他们做了一些非常好的工作帮助完成数据库管理任务的产品。
----附录----
根据对问题的修改,这里有几个额外的想法:
(1)允许您的生产调查具有“禁用”或“测试”模式,因此您无需在其他环境中更改数据。这使您只有在存在实际的开发更改时才能将内容从dev移动到生产中。
(2)定义“包”机制,将调查从一个环境移动到另一个环境。这将允许您通用和可靠地处理合并冲突,ID更改等。作为奖励,这将允许您将生产调查移回dev以进行调试和测试。