gpt4 book ai didi

c# - SqlDataReader 和网络延迟

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:24 25 4
gpt4 key购买 nike

我从 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)
{
...
}
}
}
}
}
}

最佳答案

有几种检索数据的方法。不幸的是,当有许多记录时,他们似乎都在内部使用 Datareader 导致延迟。正如 Allan 所提议的,我将以另一种方式传输数据。我将创建一个 Web 服务,它返回一个 DataSet 或一个压缩格式的数据序列化。

关于c# - SqlDataReader 和网络延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34721790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com