public void BulkLoadDestinationTables() { var sourceQueryRunner = new QueryRunner(tableSet.SourceConnectionStringName); foreach (var tableMap in tableSet.Mappings.Where(ts => ts.TruncateDestinationAndBulkLoadFromSource).OrderBy(ts => ts.Ordinal)) { var query = syncChangesData.BuildQueryToRemoveChangesForTable(tableMap.SourceSchema, tableMap.SourceTable); sourceQueryRunner.RunQuery(query); Logging.WriteMessageToApplicationLog("About to bulk load data from " + tableMap.FullyQualifiedSourceTable + " to " + tableMap.FullyQualifiedDestinationTable, EventLogEntryType.Information); using (var bulkCopy = new SqlBulkCopy(DestinationConnectionString, SqlBulkCopyOptions.KeepIdentity)) { bulkCopy.DestinationTableName = tableMap.FullyQualifiedDestinationTable; bulkCopy.EnableStreaming = true; bulkCopy.BulkCopyTimeout = BulkCopyTimeout; using (var conn = openSourceConnection()) { var sql = "select * from " + tableMap.FullyQualifiedSourceTable + ";"; if (!string.IsNullOrEmpty(tableMap.CustomSourceSQLForBulkLoadOnly)) { sql = tableMap.CustomSourceSQLForBulkLoadOnly; } var command = createCommand(conn, sql); command.CommandTimeout = BulkCopyTimeout; using (var reader = command.ExecuteReader()) { bulkCopy.WriteToServer(reader); } } bulkCopy.Close(); } } }