我从windows应用程序加载数据以进行离线处理。我使用SqlDataReader和bulkcopy来完成此操作。请参阅下面的代码
但是我的一个表包含大约10.000行。当与数据库服务器在同一网络上时,该过程大约需要2秒。通过VPN连接和宽带路由器连接,大约需要70秒。这是由于SqlDataReader逐行传递结果的方式在网络中造成的延迟。
当有许多记录时,有没有一种比SqlDataReader更快的检索数据的方法。
public void bulkCopyTable(string getDataStoredProcedure, string destinationTable)
{
using (SqlConnection MasterConnection = new SqlConnection(MasterServerDbConnectionString))
{
MasterConnection.Open();
using (SqlConnection connection = new SqlConnection(localDbConnectionString))
{
connection.Open();
SqlCommand cmdMasterData = new SqlCommand(getDataStoredProcedure, MasterConnection);
cmdMasterData.CommandType = CommandType.StoredProcedure;
SqlParameter paramMasterData1 = new SqlParameter("@getAll", SqlDbType.Bit);
paramMasterData1.Value = 1;
cmdMasterData.Parameters.Add(paramMasterData1);
cmdMasterData.CommandTimeout = 60;
using (SqlDataReader dataReaderMasterData = cmdMasterData.ExecuteReader())
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(AutoProgConnection))
{
bulkCopy.DestinationTableName = destinationTable;
try
{
// Write from the source to the destination.
bulkCopy.WriteToServer(dataReaderMasterData);
}
catch (Exception ex)
{
...
}
}
}
}
}
}发布于 2016-01-13 15:20:46
有几种检索数据的方法。不幸的是,当有manye记录时,它们似乎都在内部使用Datareader,导致延迟。根据Allan的建议,我将以另一种方式传输数据。我将创建一个webservice,它以压缩格式返回数据的DataSet或序列化。
https://stackoverflow.com/questions/34721790
复制相似问题