zoukankan      html  css  js  c++  java
  • .net2.0中SqlBulkCopy批量复制数据出错原因分析!

            在项目后台数据库选择SqlServer,进行批量复制数据时,.net2.0中提供的SqlBulkCopy不失为一个好的选择,性能相当可观;最近亲手实验一把,效果不错,大家可以参见http://www.cnblogs.com/webabcd/archive/2007/04/09/705165.html

            不过在使用的过程中也遇到让人抓狂的问题,最突出的就是在程序执行中提示" error: 0"错误,然后Sql服务器就被关闭.解决的方法竟然是因为一列的长度搞错了!

            问题的起因如下:项目中需要提供针对不同数据源进行数据导入操作,现提供两种:Excel,DBF.
    在用Excel为数据源,就可以直接进行数据导入! 但导入数据源用的是DBF,相关的数据信息已经读取到内存,但在执行到bulkCopy.WriteToServer(sourceData);时 就会出现如下错误:
    "在从服务器接收结果时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。)" 然后sqlserver的服务会被停止!

    在调试时,数据已经读到DT中,开始估计应该是列映射类型没做好的原因!但没前SqlBulkCopoy没有找到怎样映射列类型;由于SqlBulkCopy的与BCP类似,于是对问题分析的重点转向分析BCP的导入导出,在进行将DBF文件导入SqlServer时,出现了奇怪的问题,数据类型为Datetime的列竟然在导入时不能被识别,必须手动的进行设置,大家可以试一下(vfp文件导入sql2005);

    随着对上面问题的分析,没办法,服务被停止,问题太大了,只有老老实实的从头做起,先用最基本的字段测试SqlBulkCopy,DBF文件用简单的一个字段测试,通过,两个字段,也通过,加上DateTime字段,也通过,奇怪了???
    在仔细检查原来导入出错的DBF文件,原来是因为当中有一字段类型与数据库中字段长度不相同,改过来之后问题就解决了!

    为什么会这样,简单的一个小问题,会出现这么可怕的结果"sql服务被停止",是不是SqlBulkCopy的BUG呢?


  • 相关阅读:
    x01.Weiqi.6: 立体棋子
    x01.Game.MapEditor: 地图编辑器
    SQL Server插入中文出现乱码??的解决办法
    Cachecontrol使用:header('Cachecontrol:private')
    验证身份证号码Javascript代码
    .Net GDI+缩放绘图
    Access(JETSQL)问题集锦
    Android开发中Google谷歌地图坐标系怎么转Baidu百度地图坐标系
    21、桥接模式(Bridge模式)详解
    22、装饰模式(装饰设计模式)详解
  • 原文地址:https://www.cnblogs.com/linfuguo/p/907666.html
Copyright © 2011-2022 走看看