我正在使用Microsoft Sql Server Management Studio。我目前有一个包含数据的现有数据库,我将其称为DatabaseProd。我还有一个第二个数据库,其中包含用于测试的数据,因此数据既不完全正确也不是最新的。我将这个数据库称为DatabaseDev。
但是,DatabaseDev现在包含新添加的表和新添加的列等。
我想将此新模式从DatabaseDev复制到DatabaseProd,同时保留DatabaseProd的数据。
前任。DatabaseProd包含2个具有列ID和名称的表TableA和具有列ID和jobName的表B,这些表包含我要保留的数据
DatabaseDev包含3个表TableA,这些表的TableA具有列ID,名称和phoneNum TableB,具有列ID和jobName TableC,具有列ID和文档,这些表包含我不需要的数据
将DatabaseDev模式复制到DatabaseProd,但是保留来自DatabaseProd的数据,因此复制后的DatabaseProd看起来像是具有列ID,名称和phoneNum TableB,具有列ID的TableA以及具有列ID和文档的jobName TableC的TableA,但是表将包含其原始数据。
那可能吗?
谢谢
您可以使用Red-Gate SQL Compare,这将使您能够比较两个数据库并生成要在源数据库上运行的脚本。您必须支付许可证费用,但会获得14-day trial period。
14-day trial period
这个工具以及Data Compare和两个我一直坚持以新角色使用的工具,因为它们可以加快开发时间并最大程度地减少人为错误。
另外,使用SQL比较时的一个很好的 技巧 -如果您需要生成一个rollback script,则可以编辑项目(创建之后rollout script),在源和目标之间进行切换,这将创建一个脚本,该脚本会将模式返回到原始状态声明rollout script失败。但是,在执行此 操作 时要 非常小心 , 不要选择与sql compare同步 ,而是选择生成脚本,请参见image。我无法上传图像,但是我已经在此处链接了一个图像-您可以看到两个选项,以选择“使用SQL比较生成脚本/同步”。
rollback script
rollout script