У меня есть пара предложений:
1) Убедитесь, что и база данных, и файл журнала базы данных, которую вы пишете, имеют более чем достаточно свободного места для размещения данных, которые вы пишете. Динамическое изменение размера баз данных является очень дорогой операцией для SQL Server, и если вы начнете с небольшой базы данных с небольшим процентом изменения размера, вы будете постоянно изменять ее.
2) Оберните ваши команды вставки в транзакцию. Это должно существенно улучшить скорость. Вероятно, вы не сможете обернуть все 80 тыс. Записей в одну транзакцию, но вы можете попробовать 1000 или около того за раз. Псевдо-код:
Const MAX_RECORDS_PER_LOOP = 1000
Dim Counter As Integer
Dim trans As SqlTransaction
Try
For Each record In File
' If we are not in a transaction, enter one
If trans Is Nothing Then
trans = conn.BeginTransaction()
End If
' Do your insert
' Boost the counter
Counter += 1
' We have reached the max
If Counter = MAX_RECORDS_PER_LOOP Then
' Commit the previous batch and reset the values
trans.Commit()
trans = Nothing
Counter = 0
End If
Next
' Commit the last batch, if any
If trans IsNot Nothing Then
trans.Commit()
End If
Catch theException As Exception
' Report the exception
' Rollback if trans in progress
If trans IsNot Nothing Then
trans.Rollback()
End If
End Try