惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog
T
The Blog of Author Tim Ferriss
量子位
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky
小众软件
小众软件
Recent Announcements
Recent Announcements
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
I
InfoQ
美团技术团队
G
Google Developers Blog
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
IT之家
IT之家
Microsoft Security Blog
Microsoft Security Blog
博客园 - 聂微东
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Help Net Security

博客园 - 林子

关于IT概念的一些思考 UML相关工具一览(截止2012年10月)(ZT) 业务分析师在敏捷项目中的作用(ZT) 对业务建模的思考——为什么要业务建模 (转) 如何管理你的程序员(ZT) 引入敏捷是否需要颠覆现有技术管理框架?(ZT) 时间管理(Time Management)(ZT) 分析:商业智能中外差距到底有多大(ZT) SQL Server 索引基础知识 主键与聚集索引(ZT) 无依赖Office资源的导入导出 sqlite使用手册(ZT) 2008新的一年到来了! 用Dundas制作盒须图BoxPlot(盒式图,箱形图) 101个微软提供的Visual Studio 2005示例(ZT) .NET中完成FTP各功能操作 Dundas Win Chart 5.5.0的破解... Visual Studio 2005(C#)中只允许一个实例运行的一种方法 在窗体的Load时怎么退出窗体 Win窗体程序中的DataGridView未提供的DataView存在的功能!(ZT)
.net2.0中SqlBulkCopy批量复制数据出错原因分析!
林子 · 2007-09-27 · via 博客园 - 林子

        在项目后台数据库选择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呢?