Я использую SqlBulkCopy для импорта из внешнего DB. При импорте в nvarchar столбец, если столбец не является достаточно большим для содержания входящей строки, он перестал работать с:
InvalidOperationException: данное значение Строки типа от источника данных не может быть преобразовано для ввода nvarchar указанного целевого столбца. Строка или двоичные данные были бы усеченными.
Я был бы уверенный любить мочь сказать пользователю, какой целевой столбец имел проблему. Я прочесал исключение, но не вижу его нигде. Существует ли способ настроить вещи так имя, или индекс столбца возвращается в исключении?
Вот псевдо код моего массового копирования:
using (DbConnection source = DataTableProviderAssists.GetTypedDbConnection(package.ImportSourceType, package.UnencryptedConnectionString))
{
using (DbCommand cmd = GetCommand(package, source))
{
source.Open();
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(RequestContext.ConnectionString, SqlBulkCopyOptions.TableLock))
{
bulkCopy.DestinationTableName = temporaryTableName;
bulkCopy.BatchSize = 40000;
bulkCopy.BulkCopyTimeout = 60000;
foreach (ImportField field in package.Fields)
{
bulkCopy.ColumnMappings.Add(field.Name, field.Name);
}
bulkCopy.WriteToServer(reader);
}
}
}
Спасибо