从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)
{
...
}
}
}
}
}
}
答案 0 :(得分:0)
有多种方法可以检索数据。不幸的是,当有很多记录时,它们似乎都在内部使用Datareader导致延迟。正如Allan提出的,我将以另一种方式传输数据。我将创建一个webservice,它返回一个DataSet或以压缩格式获取数据。