Я использую класс SQLBulkCopy от C # для вставки нескольких строк в SQL Server 2008 R2 . Он работает для обычной таблицы .. но не работает для таблицы с разреженным столбцом.
Нужно ли устанавливать дополнительные параметры для разреженного столбца в SQLBulkCopy ?
Мой код:
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(sqlConnection, SqlBulkCopyOptions.KeepIdentity, null))
{
foreach (DataColumn item in objectData.Columns)
{
sqlBulkCopy.ColumnMappings.Add(item.ColumnName, item.ColumnName);
}
sqlBulkCopy.DestinationTableName = "[" + tableName + "]";
sqlBulkCopy.WriteToServer(objectData);
}
Я получаю эту ошибку:
Данная ColumnMapping не соответствует ни одному столбцу в источнике или назначении
Я предполагаю, что это не из-за разреженных столбцов. У вас есть какие-то столбцы в таблице?
Если таблица имеет столбец_set , разреженные столбцы не обрабатываются как разные столбцы. Значения всех разреженных столбцов включены в значение column_set , который экспортируется так же, как столбец XML; то есть, как varbinary (max), если он связан как двоичный тип, или как nvarchar (max), если он связан как тип char или wchar). При импорте значение column_set должно соответствовать схеме column_set .
Вы можете найти более подробную информацию здесь Поддержка разреженных столбцов в собственном клиенте SQL Server