Задержка или VPN подавляют загрузку из Excel в SQL Server? - PullRequest
0 голосов
/ 18 декабря 2009

Я загружаю данные из Excel на SQL Server, используя следующую структуру:

Private Sub ado_upload()

    Dim objConnection As New ADODB.Connection
    Dim objCommand As New ADODB.Command
    Dim strSQL As String
    Dim strDSN As String
    Dim intCounter As Integer

    strDSN = "provider=SQLOLEDB;" _
    & "server=<server>;" _
    & "database=<database>;" _
    & "uid=<uid>;pwd=<pwd>;" _
    & "trusted_connection=false;"

    With objConnection
        .ConnectionString = strDSN
        .Open
    End With

    strSQL = "SET NOCOUNT ON; " _
    & "INSERT INTO dbo.[table1] ( [col1] ) VALUES ( ? );"

    With objCommand

        .ActiveConnection = objConnection
        .CommandText = strSQL
        .Prepared = True
        .Parameters.Append .CreateParameter("col1", adInteger, adParamInput)

        For intCounter = 0 To 9
            .Parameters("Col1").Value = intCounter
            .Execute
        Next intCounter

    End With

End Sub

Скорость процедуры зависит от географического расстояния между сервером и компьютером, на котором выполняется процедура. На самом сервере это быстро (300 000 вставок за 10 минут), на другой стороне страны это относительно медленно (300 000 вставок может занять несколько часов) Удаленная загрузка осуществляется через VPN.

Я думаю, что задержка в сети должна замедлять процесс. Есть ли способ обойти сетевую задержку или настроить VPN для ускорения загрузки?

Спасибо!

1 Ответ

1 голос
/ 18 декабря 2009

Скорость процедуры зависит от географического расстояния между сервером и компьютером, на котором выполняется процедура.

Это действительно зависит от того, сколько прыжков вы и машина, к которой вы подключаетесь на другом конце, от магистральных магистралей, и маршрутов между ними. Это не всегда один и тот же маршрут. Используйте команду tracert, чтобы увидеть, поскольку узким местом могут быть пакеты, проходящие через соединение со скоростью 10 Мбит / с, а не линия OC.

На самом сервере это быстро (300 000 вставок менее чем за 10 минут),

Само собой разумеется, что выполнение чего-то локального для машины будет выполняться с максимально возможной скоростью вне нагрузки на машину в данный момент времени.

... загрузка осуществляется через VPN.

Хотя это безопасно, это усугубляет проблему, потому что издержки этой безопасности означают, что вы можете отправлять меньше за пакет, чем если бы данные были незашифрованы.

Как я упоминал ранее, вы не можете контролировать маршруты, используемые, когда ваши пакеты находятся за пределами вашей сети. Все, что я могу предложить, это загрузить файлы на сервер, а затем запустить оттуда.

Загрузка намного быстрее, чем загрузка, даже если это всего лишь команда ADO. Это потому, что данные загружаются с SQL Server в виде двоичных данных? Есть ли способ достичь такой же производительности при загрузке без предварительной загрузки файла на сервер?

Зависит от соединения и условий договора. Жилой интернет - это всегда асимметричное соединение - у вас будет больше трафика, чем при загрузке. Причина в том, что серфинг и т. Д. Ориентирован на загрузку - вы используете очень небольшую полосу пропускания для загрузки, например запросов страниц и отправки форм. Пока вы не хотите загружать файлы ...

Единственный способ повысить скорость загрузки - это улучшить условия подключения и / или условия контракта.

...