none
errore bulkcopy dopo passaggio da sql server express 2014 a sql server developer 2019 RRS feed

  • Domanda

  • Ciao a tutti, sono passato da sql server express 2014 a sql server developer 2019 e non mi funziona piu la bulkcopy che importa uno sheet excel in sql server con vb.net.

    L'errore che mi restituisce è il nome del file , ma è sempre stato cosi e funzionava benissimo , da quello che ho letto il problema dovrebbe essere la stringa di connessione e il AccessDatabaseEngine e accessruntime . Il problema è che non riesco a trovare la soluzione ho provato a cercare tante volte ma microsoft non spiega cosa si deve fare .

    Vi posto il codice che funzionava a meraviglia. 

        Public Function ImportDataFromExcel(excelFilePath As String, ByVal excelFileName As String) As Integer
    
            Dim ret As Integer = 0
            Dim ssqltable As String = "tab" & excelFileName & "$"
    
            Dim myexceldataquery As String = "SELECT * FROM " & "[" & ssqltable & "]"
            Try
                'crea le connctionstring 
                Dim sexcelconnectionstring As String = CreateConnectionString(excelFilePath)
                Dim ssqlconnectionstring As String = ConfigurationManager.ConnectionStrings("dbSchedaLavoroBBGConnectionString").ConnectionString
    
                'esegue una stored procedure per cancellare una tabella se esiste
                Using delCommand = _db.GetStoredProcCommand("spDropSeEsiste")
                    _db.AddInParameter(delCommand, "tableName", DbType.String, ssqltable)
                    _db.ExecuteNonQuery(delCommand)
                End Using
    
                'Esegue una stored procedure per creare una tabella 
                Using createCommand = _db.GetStoredProcCommand("sp_tabCreate")
                    _db.AddInParameter(createCommand, "tabName", DbType.String, ssqltable)
                    _db.ExecuteNonQuery(createCommand)
                End Using
    
                'serie di comandi per la bulk copy data da file excel in una tabella database sql server
                Dim oledbconn As New OleDbConnection(sexcelconnectionstring)
                Dim oledbcmd As New OleDbCommand(myexceldataquery, oledbconn)
                oledbconn.Open()
                Dim dr As OleDbDataReader = oledbcmd.ExecuteReader()
                Dim bulkcopy As New SqlBulkCopy(ssqlconnectionstring)
                bulkcopy.DestinationTableName = ssqltable
    
                If Not dr Is Nothing Then
                    While dr.Read()
                        bulkcopy.WriteToServer(dr)
                    End While
                    ret = 1
                Else
                    dr.Close()
                    oledbconn.Close()
                    Return ret
                    Exit Function
                End If
    
                dr.Close()
                oledbconn.Close()
            Catch ex As Exception
                MessageBox.Show("Errore ImportDataFromExcel : " & ex.Message)
            End Try
            Return ret
    
        End Function
    
    
    
        Public Shared Function CreateConnectionString(ByVal ExcelFilePath As String) As String
            Dim result As String = String.Empty
            Try
                If ExcelFilePath.ToLower.EndsWith(".xlsm") Then
                    result = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Macro;HDR=YES;""", ExcelFilePath)
                Else
                    result = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties=""Excel 8.0;HDR=NO;IMEX=1""", ExcelFilePath)
                End If
            Catch ex As Exception
    
            End Try
            Return result
    
        End Function
    

    Per favore se qualcuno mi sa dire cosa devo installare quale versione di AccessDatabaseEngine e accessruntime e quale connectionstring usare gli sarei davvero grato.

    Anche se esiste un modo alternativo per farlo , sempre da codice vb.net va bene lo stesso.

    Pero questa differenza fra le versioni del software microsoft è snervante.

    Grazie mille

    Fabrizio


    Fabrizio

    martedì 14 gennaio 2020 21:54