Я вставлял объемные данные из кода C # с использованием sqlbulkcopy. В таблице temp_upload было 15000 записей. Теперь каким-то образом метод данных, используемый в методе WriteToServer (), имел только один столбец и 37 строк.
После запуска я обнаружил, что в таблице всего 37 записей. Изначально было 152 столбца, но после этого осталось всего 32 столбца.
Что может быть причиной этого?
Код C # для этого
public static void BulkInsert(SqlConnection connection,DataTable DtRecord,string TableName)
{
if (DtRecord == null) throw new ArgumentNullException("dataTable");
// Create & open a SqlConnection, and dispose of it after we are done
connection.Open();
SqlBulkCopy bulkCopy = new SqlBulkCopy(connection);
bulkCopy.DestinationTableName = TableName;
for (int recordLoop = 0; recordLoop < DtRecord.Columns.Count; recordLoop++)
{
bulkCopy.ColumnMappings.Add(DtRecord.Columns[recordLoop].ColumnName, DtRecord.Columns[recordLoop].ColumnName);
}
bulkCopy.WriteToServer(DtRecord);
bulkCopy.Close();
connection.Close();
}
В примере кода, приведенном на этой странице MSDN, есть сценарии, которые создают таблицы с соответствующими полями перед выполнением операции копирования, поэтому я сомневаюсь, что SqlBulkCopy изменяет схему. Кроме того, SQLBulkCopy использует сопоставления столбцов, что было бы несовместимо с изменением схемы целевых таблиц, поскольку для этого не нужно было отображать сопоставления.