SqlDataReader和网络延迟

本文关键字:延迟 网络 SqlDataReader | 更新日期: 2023-09-27 18:29:44

从windows应用程序加载数据以进行脱机处理。我使用SqlDataReader和bulkcopy来完成此操作。参见下方的代码

但是我的一个表包含大约10000行。当与数据库服务器在同一网络上时,该过程大约需要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)
                        {
                            ...
                        }
                    }                        
                }
            }
        }
    }

SqlDataReader和网络延迟

有几种检索数据的方法。不幸的是,当有许多记录时,它们似乎都在内部使用Datareader,从而导致延迟。根据Allan的提议,我将以另一种方式传输数据。我将创建一个Web服务,该服务要么返回数据集,要么以压缩格式对数据进行序列化。