使用C#同步数据库的最快方法是什么?

使用C#同步数据库的最快方法是什么?,c#,sql,sql-server,datatable,synchronization,C#,Sql,Sql Server,Datatable,Synchronization,我有个问题,很明显,既然我在这里 我有一个源数据库(SQLServer2008)和一个目标数据库(也是SQLServer2008)。需要进行一些修改,这意味着大量数据必须通过C#(转换坐标、三角测量等)。但是你会怎么做呢 我在这里找一些东西。现在我正在使用一个SqlDataReader并将数据拉入DataTable中,然后使用这样的数据在将其推送到目标数据库之前对其进行操作,但是有什么更好(更快、更节省内存)的方法呢 另外,对于不需要操纵的数据,我仍然以同样的方式进行操作,我假设有一种方法可以避

我有个问题,很明显,既然我在这里

我有一个源数据库(SQLServer2008)和一个目标数据库(也是SQLServer2008)。需要进行一些修改,这意味着大量数据必须通过C#(转换坐标、三角测量等)。但是你会怎么做呢

我在这里找一些东西。现在我正在使用一个
SqlDataReader
并将数据拉入
DataTable
中,然后使用这样的数据在将其推送到目标数据库之前对其进行操作,但是有什么更好(更快、更节省内存)的方法呢

另外,对于不需要操纵的数据,我仍然以同样的方式进行操作,我假设有一种方法可以避免更快的操作

技术信息:

  • DB:2 x SQL Server 2008(源/目标)-在同一台服务器上
  • 语言:C/.NET 3.5
  • 操作系统:Windows

我会将源数据插入目标数据库上的临时表中

然后我将使用SQL合并来更新目标


我会完全减少c所扮演的角色。

您可以使用将.NET代码嵌入到sql server,以消除数据库和计算机之间的往返时间。

您应该用于ETL任务。

如果一次只读取和写入一条记录,那么数据表似乎有点重,除非您将其用作缓冲区。每个记录的数据转换是确定的,还是一个记录中的更改会影响其他记录?您可以使用SQLCLR在数据库本身中进行处理吗?罗伯特-目前不使用它作为缓冲区,因为没有必要,但我被告知它可能需要处理100多行,我将其放置到位,以便将其用作缓冲区..马修-我不是100%确定你在这里的意思。基本上,我从一个表中获取一条记录,将其与另一个表中的一条记录进行匹配,然后将它们放在一个新表中,该表包含额外的信息。这是一种进行连接的黑客方式,因为在这种情况下连接不起作用(除非你告诉我它会起作用!)。一旦一条记录配对,它就不能再与另一条记录配对,我想它们会以这种方式相互影响……这是有道理的。我是说C#确实需要为一些桌子做一些工作。但我可以将其用于不需要修改的表!:)我可以使用SQLCLR,我正在用它做一些其他的事情。但这其中耗时的部分是进行配对,一旦C#有了它,确实需要一些时间来快速浏览所有记录并修改它们,但我的主要问题是我是否可以在这一特定部分上进行改进。我尽量避免使用SQLCLR,除非有很大的改进,因为调试是一场噩梦!我将进一步研究这一点,但我不确定我是否有时间实现这一点。它需要由用户操作触发,我知道Integration Services可以做到这一点,但我对它们不太熟悉,在我掌握的时间里,我不确定我是否能够实施足够好的解决方案来保证损失的时间。除非你认为这真的很容易,并且愿意给我一个惊喜;-)