我正在使用SqlBulkCopy从外部数据库导入数据。当导入到nvarchar列时,如果该列无法容纳传入的字符串,则会出现以下错误:
InvalidOperationException: 给定的数据源类型为String的值无法转换为指定目标列的nvarchar类型。字符串或二进制数据将被截断。
我希望能够告诉用户哪个目标列出了问题。我已经仔细查看了异常信息,但没有发现有关此信息的任何内容。是否有一种方法可以设置,使得列的名称或索引在异常中返回?
以下是我的批量复制伪代码:
InvalidOperationException: 给定的数据源类型为String的值无法转换为指定目标列的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);
}
}
}
谢谢