我在SourceDB(SQL Server DB)中有一个表tblSource,在TargetDB(SQL Server DB)中有一个tblTarget。来自tblSource的数据必须移动到tblTarget。 tblSource具有位字段以指示将哪些数据移动到tblTarget,因此当将行复制到tbltarget时,必须设置此标志。我需要在C#中完成它,仍然欢迎在T-SQL中提出建议。我的问题是什么都是可能的解决方案,哪种方法最好?
答案 0 :(得分:1)
如果在SQL Server 2008中,合并将适用于您。 OUTPUT适用于SQL Server 2005 +。
您需要更新记录以将位标志和OUTPUT INSERTED。*设置到目标表中。
只有在计划将所选记录插入目标表时,才可以考虑输出所选记录。
这在性能方面很好,因为这种技术只需要SQL Server遍历记录一次。
检查这些链接是否使用了OUTPUT。
http://msdn.microsoft.com/en-us/library/ms177564.aspx&& http://blog.sqlauthority.com/2007/10/01/sql-server-2005-output-clause-example-and-explanation-with-insert-update-delete/
答案 1 :(得分:0)
您可以使用TSQL MERGE
语句,这样就不需要在每一行上保留一个标记。
如果需要,可以从C#执行,或者将其包装在存储过程中。如果它们位于不同的服务器实例中,则可以创建链接服务器。
答案 2 :(得分:0)
我会使用SQLBulkCopy类。我过去曾经用它,并且好运。它非常快速且易于使用。该链接上有大量示例代码可帮助您入门。
答案 3 :(得分:0)
有没有理由说明简单的INSERT不是一个选项?
INSERT INTO tblTarget (destcol1, destcol2)
SELECT (sourcecol1, sourcecol2) FROM tblSource