0

我在不同的服务器(开发和生产)上有两个数据库我需要将我的数据从多个表从开发移动到生产,而不影响生产中预先存在的数据。知道 SQL Manager 是否支持这样的东西,还是我必须为它编写一个脚本?

我的详细情况:

我有一个工具可以让我为我的公司创建调查。该工具位于开发和生产中。因为我不想在我的生产数据库中添加测试数据,所以我使用该工具的开发版本来创建我的调查并在本地测试它们。该工具与我数据库中的几个表相关联,例如调查、问题、答案、结果等。

我当前的设置:当我完成调查并准备启动时,我必须使用该工具的生产版本来手动重做我之前在生产中所做的所有工作。这一点都不理想,不仅因为我必须花时间去做,而且在手动复制过程中也有出错的风险。

我需要做的:我上面提到的那些表,里面已经有生产数据,可供我公司使用。当我创建一个新调查时,我只需要将新调查的特定记录(来自所有表)从开发转移到生产,而不会影响我以前在那里的任何东西。

4

3 回答 3

3

利用Import and Export Data

或者将 DEV 服务器作为链接服务器添加到您的 PROD 服务器中,然后使用 INSERT/SELECT 语句

于 2012-10-19T15:03:07.640 回答
3

您可以使用数据库比较工具,对于 SQL Server,我使用 SQL Delta,它允许您自动创建脚本以在您希望的数据库中运行,http://www.sqldelta.com/

于 2012-10-19T15:06:11.947 回答
1

您不会为此找到任何开箱即用的解决方案,但是一旦您清楚地了解了您要完成的任务(详细信息),就有一些工具可以提供帮助。在这一点上花一点时间来确保你真的清楚你期望发生的事情会在你投入生产时带来巨大的回报。

您所描述的场景听起来就像您的数据库中有一些配置类型的数据以及您的事务或域数据。换句话说,您需要将更改从开发环境升级到生产环境,以使您的应用程序正常工作。这并不罕见,但是当您为这样的场景设置促销计划时,您必须非常谨慎和非常小心——毕竟,您不想将测试数据推送到您的生产系统中您的配置更改。因此,确定您将要从 dev 推送到 prod 的表并确保这些表是您正在朝该方向推送的唯一表是至关重要的。

您还提到了“不影响生产中预先存在的数据”。你能告诉我们更多关于这个(也许是一个例子)吗?通常,您希望保持特定表(按照惯例)设置为仅将更改移动到一个方向——即,从开发到产品。如果您有需要包含合并更改的表,您将不得不更加注意正确处理这一点,因为您需要处理合并错误——当您有数据要推送时会发生什么例如,它已经存在于目标数据库中?

一旦你制定了你真正想要移动的计划,其他答案中提到的一些工具可能会起作用,或者查看 Redgate 的工具(如SQL Data Compare)——它们制作了一些非常好的产品来帮助 DB管理任务。

---- 附录 ----

根据对问题的编辑,这里有一些额外的想法:

(1) 允许您的生产调查具有“禁用”或“测试”模式,因此您不必在另一个环境中更改数据。这允许您仅在存在实际开发更改时才能将内容从开发转移到生产。

(2) 定义一个“包”机制以将调查从一个环境移动到另一个环境。这将允许您通用且可靠地处理合并冲突、ID 更改等。作为奖励,这还允许您将生产调查移回开发人员以进行调试和测试。

于 2012-10-19T15:16:05.770 回答