using System.Data.SqlClient;
using System.Threading.Tasks;
public static void Main()
var dt = GetDataToInsert();
using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
var sqlBulk = new SqlBulkCopy(connection);
CancellationTokenSource cancelationTokenSource = new CancellationTokenSource();
CancellationToken cancellationToken = cancelationTokenSource.Token;
sqlBulk.DestinationTableName = "Customers";
var task = sqlBulk.WriteToServerAsync(dt, cancellationToken);
Console.WriteLine("Hit any key to cancel the bulk load");
if (Console.KeyAvailable)
cancelationTokenSource.Cancel();
catch (AggregateException ex)
Console.WriteLine(ex.Message);
Console.WriteLine("WriteToServer Canceled");
FiddleHelper.WriteTable(data);
public static DataTable GetData()
var dt = new DataTable();
using(var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
var command = connection.CreateCommand();
command.CommandText = "SELECT * FROM Customers";
using(var adapter = new SqlDataAdapter(command))
dt.TableName = "Total: " + dt.Rows.Count + " rows";
public static DataTable GetDataToInsert()
var dt = new DataTable();
dt.Columns.Add("CustomerID", typeof(int));
for(int i = 0; i < 1000; i++)
dt.Rows.Add(i, "Name_" + i, "City_" + i);
public static void CreateTable()
using(var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
var command = connection.CreateCommand();
CustomerID INT IDENTITY(1, 1),
command.ExecuteNonQuery();