0


0

遅延またはVPNがExcelからSQL Serverへのアップロードを妨げていますか?

次の構造を使用して、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=;" _
    & "database=;" _
    & "uid=;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

手順の速度は、サーバーと手順を実行するコンピューター間の地理的距離によって異なります。 サーバー自体では高速で(10分以内に300,000回の挿入)、国の反対側では比較的低速です(300,000回の挿入には数時間かかる場合があります)。 リモートアップロードは、VPN上で動作します。

ネットワークの遅延がプロセスを遅くしているに違いないと思います。 ネットワークの遅延を回避する方法や、VPNを調整してアップロードを高速化する方法はありますか?

ありがとうございます。

1 Answer


1


_ 手順の速度は、サーバーと手順を実行するコンピューター間の地理的距離によって異なります。 _

それは、あなたともう一方の端で接続しているマシンがメジャートランクから何ホップであるか、そしてその間のルートに本当に依存します。 また、必ずしも同じルートではありません。 ボトルネックはOCラインではなく10 Mb / s接続を通過するパケットである可能性があるため、「tracert」コマンドを使用して確認します。

_ サーバー自体では高速です(10分以内に300,000回の挿入)。 _

言うまでもなく、マシンに対してローカルな何かを実行すると、指定された時間にマシンにかかる負荷を除いて、可能な限り高速で実行されます。

_ …​uploads operate over a VPN. _

それは安全ですが、そのセキュリティのオーバーヘッドは、データが暗号化されていない場合よりもパケットあたりの送信量が少ないことを意味するため、問題を悪化させます。

前に述べたように、パケットがネットワークの外に出ると、ルートを制御できません。 私が提案できるのは、サーバーにファイルをアップロードして、そこから実行することです。

_ ダウンロードは、単なるADOコマンドであるにもかかわらず、アップロードよりもはるかに高速です。 データがバイナリデータとしてSQL Serverからダウンロードされているためですか? 最初にファイルをサーバーにアップロードせずに、アップロードで同じパフォーマンスを達成する方法はありますか? _

接続と契約条件に依存します。 住宅のインターネットは常に非対称接続です-アップロードよりもダウンロード帯域幅が多くなります。 サーフィン/などはダウンロード中心なので、ページリクエストやフォームの送信など、アップロードに使用する帯域幅はごくわずかです。 ファイルをアップロードするまで…​

より良いアップロード速度を得る唯一の方法は、より良い接続条件や契約条件を取得することです。