使用SqlBulkCopy将行插入到SQL Server 2008中具有“xml”类型列的表中会引发异常

时间:2012-07-08 08:23:14

标签: c# sql-server sqlbulkcopy

我在SQL Server中有一个简单的表,有两列Id (BIGINT), PublishData (XML)

我有兴趣使用SqlBulkCopy但是当我尝试使用SqlBulkCopy.WriteToServer(DataTable)时,它会给我以下异常。我在创建数据表并为SqlXml添加列时,在C#中使用PublishData数据类型。我认为它与SQL Server中的列类型xml不匹配。我需要知道在为xml列创建数据表时需要使用的正确数据类型是什么,然后将其与SqlBulkCopy一起使用。

任何帮助都会受到赞赏吗?

  

未处理的异常:System.InvalidCastException:指定的强制转换是   无效。
  在System.Data.SqlClient.TdsParser.WriteBulkCopyValue(对象值,   SqlMetaDa taPriv元数据,TdsParserStateObject stateObj)
  在System.Data.SqlClient.SqlBulkCopy.WriteToServerInternal()
  在System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServer(Int32   columnCount)
  在System.Data.SqlClient.SqlBulkCopy.WriteToServer(DataTable表,   DataRowSt吃了rowState)
  在System.Data.SqlClient.SqlBulkCopy.WriteToServer(DataTable表)

1 个答案:

答案 0 :(得分:1)

  

需要知道在为xml创建数据表时我需要使用的正确数据类型是什么   列然后与SqlBulkCopy一起使用

怎么样把它绑起来而不是在这里问?我的意思是,严重的是,有多少数据类型?

我建议你在.NET中尝试使用STRING;)有点显而易见,不是吗 - 你很难将XML存储在Bool或Integer数据类型中,因此我可以看到的SqlXml的唯一替代方法是string。