Как я могу заставить SqlBulkCopy говорить мне, какой столбец имел ошибку усечения

Я использую 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);
        }
    }
}

Спасибо

5
задан ryanman 29 June 2010 в 23:27
поделиться