Trasferimento dati a SQL server

di il
2 risposte

Trasferimento dati a SQL server

Ciao a tutti,ho passato un po' di ore su questo problema ma non ne esco ... premetto che non sono un programmatore
Ho adattato qualche riga di codice per migrare delle tabelle da Access a Sql server. Queste sono le funzioni
------------------------------------
Public Function exportTable(table As String, destTable As String)

DoCmd.TransferDatabase acExport, "ODBC Database", _
"ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=192.168.0.1;UID=XXXX;PWD=XXXX;Trusted_Connection=No;APP=SSMA;DATABASE=DBname;", _
acTable, table, destTable

End Function

Public Sub exportToSQLserver()

Dim a as Variant
Dim b as Variant
Dim c as Variant

a = exportTable("Source tablename1", "Dest tablename1")
b = exportTable("Source tablename2", "Dest tablename2")
c = exportTable("Source tablename3", "Dest tablename3")

End Sub
------------------------------------

Chiamando exportToSQLserver la procedura funziona perfettamente per "Source tablename1", ma fallisce per "Source tablename2". Dopo svariate prove ho capito che l'operazione funziona solo per la prima tabella (qualunque essa sia), dalla seconda in poi fallisce; fallisce nel senso che viene creata su SQL server la tabella di destinazione, ma rimane completamente
vuota.
L'errore e':
Errore di run time '3146'
ODBC: chiamata non riuscita
Il workaround e' eseguire l'operazione solo per la prima tabella, chiudere il db Access, riaprirlo, eseguire l'operazione solo per
la seconda tabella e via cosi'
Ho il sospetto che dovrei in qualche modo chiudere la connessione al SQL server tra un trasferimento e l'altro, ma non ho idea di come fare. Idee / suggerimenti ?
Grazie
Marco

2 Risposte

  • Re: Trasferimento dati a SQL server

    Hai provato una cosa simile
    
    Dim db as Database
    Set db=currentdb
    db.execute "INSERT INTO [ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=192.168.0.1;UID=XXXX;PWD=XXXX;Trusted_Connection=No;APP=SSMA;DATABASE=DBname;]." & destTable & " ( FIELD1,FIELD2,...FIELDN )
    SELECT FIELD1,FIELD2,....FIELDN FROM " & table
  • Re: Trasferimento dati a SQL server

    Ciao @Alex, grazie per la risposta; ho provato il tuo metodo, sia cosi' che modificandolo in un select into, ma l'effetto e' sempre
    uguale, i dati dalla seconda tabella in poi non vengono migrati e viene restituito un errore.
    Non so se il problema sia la grandezza delle tabelle; cmq stavo pensando di creare un altro db access di appoggio e con del codice
    VBA aprire il db problematico, eseguire il trasferimento della prima tabella, chiuderlo, riaprirlo, trasferire la seconda e via cosi'. Niente di cui andare fieri, ma non riesco a trovare una soluzione
    Grazie ancora
Devi accedere o registrarti per scrivere nel forum
2 risposte