VB程序中从另一SQL服务器倒入数据表(15万条记录)到本地SQL服务器出现超时错误;(1)查看本地SQL服务器中的数据表,发现没有任何记录;(2)但是在查询分析器中同样的语句能正常执行,测试下来需35秒左右;(3)程序中command timeout 、 connect timeout超时均设置很长时间;语句如下:INSERT INTO ttjgxx SELECT * FROM OPENDATASOURCE ('SQLOLEDB','Data Source=testserver;User ID=sa;Password=123').jgxx.dbo.sajgxx
解决方案 »
- Combobox控件 致 VB软件无任何提示,强行关闭
- 求一段VBS打印代码
- 关于子窗体最小化的问题!!!!!!!!!!!!!
- 如何在vsflexgrid表头格内画斜线?
- 转载重点大学视频课件
- ■□■□高分求救:一个菜鸟的问题,如何用VB在 ACCESS 数据库中动态创建一个数据表??
- 高手在哪里????如何将avi视频文件中的某些幀抽出来,形成一个新的avi文件???????
- Picturebox控件问题!!!!(你说简单,进来拿分;我说不简单,只好送分!!)
- 哪儿有介绍用MSXML.DLL访问XML文件的资料?
- 查课表的代码
- 在网页中嵌入自编控件,不带任何属性参数时一切正常,但如果代入属性参数便会弹出对话框确认!
- 采用VB调用Word还是直接采用VBA,高分请教各位高手!
ADONonnectionTimeout 连接时间长一点;
CommandTimeout 执行时间长一点!
另外,也可试试DTS服务.
如何生成DTS包,如何用vb调用?
不必客气,举手之劳而已。对于这个问题,我想说的是,在大数据量的情况下,即使使用DTS,仍然可能会出现死机状况。MICROSOFT的DTS这个东东功能非常强大,但是稳定性并不见得好。我认为,导致死机的原因,是由于15万条记录一次导入,使得一个数据库事务(因为你使用一条SQL语句来完成此操作)过大。我这里没有什么特别好的建议,只能建议你用最笨的办法:在VB中开两个结果集对倒,每1000条记录COMMIT一次事务。这样,在用户能够忍受这种速度的情况下,稳定性应该是有保障的。即使在过程中出错,你的导入过程至少能够部分成功,只要你记录下出错点,还可以再来。
INSERT INTO ttjgxx SELECT TOP 1000 * FROM OPENDATASOURCE ('SQLOLEDB','Data Source=testserver;User ID=sa;Password=123').jgxx.dbo.sajgxx WHERE [ID] NOT IN(SELECT TOP 1000 * N [ID] FROM FROM OPENDATASOURCE ('SQLOLEDB','Data Source=testserver;User ID=sa;Password=123').jgxx.dbo.sajgxx)
不用两个记录集对调,每次读1000条记录插入,再读后面的1000条。