使用C#(vs2005)我需要将一个表从一个数据库复制到另一个数据库.两个数据库引擎都是SQL Server 2005.对于远程数据库,源代码,我只对存储过程具有执行权限,以获取本地需要的数据.
本地数据库我有更多的控制权,因为[asp.net]应用程序需要这个远程表的本地副本.我们希望它本地更容易查找和连接其他表等.
能否请您向我解释一种将此数据复制到本地数据库的有效方法.
如果使事情更简单,则可以使用与远程表相同的模式创建本地表.远程表有9列,其中没有一列是标识列.远程表中大约有5400行,每年增加约200行.所以不是一个快速变化的表.
也许是SqlBulkCopy; 使用SqlCommand.ExecuteReader获取在调用SqlBulkCopy.WriteToServer时使用的阅读器.这与bulk-insert相同,所以非常快.它应该看起来什么样(未经测试);
using (SqlConnection connSource = new SqlConnection(csSource)) using (SqlCommand cmd = connSource.CreateCommand()) using (SqlBulkCopy bcp = new SqlBulkCopy(csDest)) { bcp.DestinationTableName = "SomeTable"; cmd.CommandText = "myproc"; cmd.CommandType = CommandType.StoredProcedure; connSource.Open(); using(SqlDataReader reader = cmd.ExecuteReader()) { bcp.WriteToServer(reader); } }
ADO.NET的批量复制功能可能会帮助您了解:
MSDN - 多个批量复制操作(ADO.NET)
一篇示例文章