RPM*_*984 8 t-sql sql-server sqlcompare sql-server-2008
我有table a和table b.(SQL Server 2008)
两个表都具有完全相同的模式.
出于此问题的目的,请考虑table a=我的本地开发表,table b=实时表.
我需要创建一个SQL脚本(包含UPDATE/DELETE/INSERT语句),它将表b更新为与表a相同.然后,此脚本将部署到实时数据库.
任何可以做到这一点的免费工具,或者更好的方式我自己可以做到这一点?
我想我可能需要在表中的所有字段上进行某种类型的连接,然后根据它生成动态SQL.
有人有主意吗?
编辑
好吧,我想我会澄清一下这个问题.
我需要同步的表是一个简单的查找表.数据非常简单明了.
这是一个TABLE A可能的样子:
IdFoo Activity IsFoo
1 Foo 1
2 Bar 0
Run Code Online (Sandbox Code Playgroud)
这是一个TABLE B可能的样子:
IdFoo Activity IsFoo
1 Foo 1
2 Bar 1
Run Code Online (Sandbox Code Playgroud)
基本上,我想要做的就是更新该BIT列(IsFoo)TABLE B以匹配TABLE A相同IdFoo 的相应值.
记住:
TABLE A 在我的本地机器上TABLE B 在实时服务器上显然我TABLE B在我的本地机器上有一个(可靠的)备份,我需要编写脚本,然后在实时服务器上运行脚本.
该表还具有引用完整性(我未显示的其他列).这意味着我不能只删除所有内容TABLE B并从中进行插入TABLE A.
这个脚本将是一次性的.所以不需要做像链接服务器,复制等的事情.通过伙伴们欣赏答案.=)
编辑:
好的 - 所以我选择了Oleg的答案(VS2010 Data Compare).快速,简单,有魅力.
不是说其他答案都不正确.我很感激所有答案!
小智 6
迟到的答案但对线程访问者有用
除了其他提到的解决方案,我可以建议尝试ApexSQL Data Diff.它可以比较和同步SQL Server数据库数据(在实时数据库和备份中),并自动化和计划数据迁移.它也适用于大型数据库,并且能够直接从SSMS执行比较.
您可以免费下载此工具并使用它.它具有功能齐全的免费试用版,并提供适用于SQL Express和Azure SQL数据库的社区版(试用期结束后).
要了解有关该工具的更多信息,请访问http://www.apexsql.com/sql_tools_datadiff.aspx
在非常简单的情况下,您将能够在本地SQL Server中定义一个新的链接服务器(请参阅Microsoft SQL Server Management Studio中的"服务器对象"/"链接服务器")并使用INNER JOIN和OUTER JOIN查找A和B表之间的差异.
在实际的和更复杂的情况下,你应该考虑参照完整性,不同的外键和标识(自动递增)现有在目标数据库中的字段,所以更新脚本将更为复杂.因此,我建议您不要花时间创建开发人员和生产数据库的同步,而应使用标准工具.我使用Visual Studio Team Edition 2008(或数据库版)或Visual Studio 2010 Ultimate版的功能来比较两个数据库中的数据.它工作得很好.