次の構造を使用して、ExcelからSQLServerにデータをアップロードしています。
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
手順の速度は、サーバーと手順を実行しているコンピューターの間の地理的な距離によって異なります。サーバー自体では高速(10分以内に300,000回の挿入)ですが、国の反対側では比較的低速です(300,000回の挿入には数時間かかる場合があります)。リモートアップロードはVPNを介して動作します。
ネットワークの待ち時間がプロセスの速度を低下させているに違いないと思います。ネットワーク遅延を回避する方法、またはVPNを微調整してアップロードを高速化する方法はありますか?
ありがとう!