/// <summary> /// Bulk insert data reader async using connection string. /// </summary> /// <param name="dataReader"></param> /// <param name="destinationTableName"></param> /// <param name="connectionString"></param> /// <param name="sqlServerBulkInsertOptions"></param> /// <returns></returns> public static async Task BulkInsertSqlServerAsync( this IDataReader dataReader, string connectionString, string destinationTableName, AsyncSqlServerBulkInsertOptions sqlServerBulkInsertOptions) { using (var connection = new SqlConnection(connectionString)) { connection.Open(); await BulkInsertSqlServerAsync(dataReader, connection, destinationTableName, sqlServerBulkInsertOptions); } }
/// <summary> /// Bulk insert data reader async. /// </summary> /// <param name="dataReader"></param> /// <param name="connection"></param> /// <param name="destinationTableName"></param> /// <param name="sqlServerBulkInsertOptions"></param> /// <returns></returns> public static async Task BulkInsertSqlServerAsync(this IDataReader dataReader, SqlConnection connection, string destinationTableName, AsyncSqlServerBulkInsertOptions sqlServerBulkInsertOptions = null) { sqlServerBulkInsertOptions = sqlServerBulkInsertOptions ?? new AsyncSqlServerBulkInsertOptions(); var bulkCopy = GetSqlBulkCopy(dataReader, destinationTableName, connection, sqlServerBulkInsertOptions); using (bulkCopy) { try { await bulkCopy.WriteToServerAsync(dataReader, sqlServerBulkInsertOptions.CancellationToken); } catch (SqlException ex) { var errmsgbcp = ""; if (ex.Message.Contains("Received an invalid column length from the bcp client for colid")) { errmsgbcp += GetBulkCopyDetailedExceptionMessage(ex, bulkCopy); throw new Exception(errmsgbcp, ex); } throw; } } }