我有两个数据库。其中一个属于CRM软件,是源代码。
另一个将是我正在开发的工具使用的目的地。
目标将包含一个表ADDRESSES
,其中包含源数据库中同名表的列的子集。
在这些数据库之间复制数据的最佳(最有效)方法是什么(顺便说一下:如果重要的话,它们位于不同的SQL Server实例上)。
我可以编写一个循环,它对从源获取的每一行进入INSERT但不认为这是有效的。
我的想法和信息:
任何引导我走向正确方向的事情都值得赞赏。
修改
我真的需要一种C#方式来复制数据。我还需要知道如何将复制的行合并回源。是否真的有必要(甚至是最佳做法)一行一行地做这个?
答案 0 :(得分:2)
为什么要编写代码来执行此操作?
最简单,最简单的方法就是使用SQL Server的bcp.exe
实用程序(bcp: B ulk C opy P rogram)。
你可以完成同样的事情via SQL Server Management Studio in a number of different ways。一旦您定义了任务,就可以保存它并安排它。
您也可以使用SQL Server的Powershell对象来执行此操作。
如果您已开始在C#中执行此操作:
select
查询以从源服务器获取所需数据。bulk insert
语句以插入数据。注意:对于上述任何一种技术,如果目标表具有标识列,则需要处理标识列。您还需要处理关键冲突。有时更容易将数据批量加载到 perma-temp 表中,然后应用先决条件转换和操作将其转移到需要的位置。
答案 1 :(得分:1)
根据你对Jwrit的答案的评论,你想要双向同步。
如果是这样,您可能需要查看Microsoft Sync Framework。
我们使用它将Premise SQL上的200多个表同步到SQL Azure,将SQL Azure同步到SQL Azure。
您可以纯粹使用C#。但是,它可能会提供比您想要的更多,或者它可能会超过一个小项目。
我只是这样说,您可以为项目选择不同的选项。
答案 2 :(得分:0)
如果这些数据库存在于两台服务器上,您可以通过执行sp_addlinkedserver在服务器之间建立链接,这里有说明进行设置。如果您计划定期“共享”数据,这可能会派上用场。
http://msdn.microsoft.com/en-us/library/ff772782.aspx
连接服务器后,简单的select语句可以将行从一个表复制到另一个表
INSERT INTO db1.tblA(Field1,Field2,Field2) SELECT Field1,Field2,Field2 FROM db2.tblB
如果数据库位于同一个实例上,则只需执行与上述类似的SQL
答案 3 :(得分:0)
如果这是一次 - 最好的选择通常是SSIS(SQL服务器集成服务),除非有复杂的数据转换 - 您可以快速轻松地进行列映射并在15分钟内完成(可靠)。 ....