Domanda

sto caricando i dati da Excel a SQL Server utilizzando la seguente struttura:

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

La velocità della procedura dipende dalla distanza geografica tra il server e il computer che esegue la procedura. Sul server stesso è veloce (300.000 inserti in meno di 10 minuti), dall'altra parte del paese è relativamente lento (300.000 inserti potrebbe richiedere ore). arrivi a distanza funzionano su una VPN.

Credo che la latenza di rete deve essere rallentando il processo verso il basso. C'è un modo per aggirare la latenza di rete, o modificare la VPN per rendere i caricamenti più veloci?

Grazie!

È stato utile?

Soluzione

  

La velocità della procedura dipende dalla distanza geografica tra il server e il computer che esegue la procedura.

In realtà dipende quanti si luppolo e la macchina ci si collega a sull'altra estremità sono dai principali linee e rotte tra. Non è sempre lo stesso percorso, sia. Utilizzare il comando tracert vedere, perché il collo di bottiglia potrebbe essere i pacchetti che passano attraverso il collegamento di un Mb / s 10 piuttosto che una linea di OC.

  

Sul server stesso è veloce (300.000 inserti in meno di 10 minuti),

Si dovrebbe andare da sé che l'esecuzione di qualcosa locale per la macchina funzionerà alla massima velocità possibile, al di fuori del carico sulla macchina in un determinato momento.

  

... arrivi operano su una rete VPN.

Mentre è sicuro, è aggravare il problema, perché il sovraccarico di che la sicurezza significa che è possibile inviare meno pacchetto che se i dati erano in chiaro.

Come ho detto prima, non è necessario alcun controllo su percorsi effettuati una volta che i pacchetti all'esterno della rete. Tutto quello che posso suggerire è di caricare i file sul server, e quindi eseguire da lì.

  

I download sono così molto più veloce di arrivi, anche se è ancora solo un comando ADO. È che, poiché i dati vengono scaricati da SQL Server come dati binari? Esiste un modo per conseguire tale stessa prestazione sugli l'upload senza caricare il file sul server prima?

Dipende dal collegamento e delle condizioni contrattuali. Internet residenziale è sempre una connessione asimmetrica - avrete più la banda passante di upload. Il motivo è che il surf / etc è scaricare centric - si usa molto poco la larghezza di banda per il caricamento, come richieste di pagine e le forme che presentano. Fino a quando si desidera caricare i file ...

L'unico modo per ottenere una migliore velocità di upload è quello di ottenere la migliore connessione e / o condizioni contrattuali.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top