VB程序中从另一SQL服务器倒入数据表(15万条记录)到本地SQL服务器出现超时错误

arrow1971 2003-08-19 05:09:41
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
...全文
64 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
KJ_Wang 2003-08-24
  • 打赏
  • 举报
回复
先在SQL Server中链接(服务器),然后再写一个存储过程,这样会更快,但别忘记了事务处理啊!
fslyw 2003-08-22
  • 打赏
  • 举报
回复
在SQL Server中直接使用XML我也不会,不过你可以在源数据库中建一个带for xml的读出数据的存储过程。然后用sqlcommand.ExecuteXmlReader方法读取,再写入新的数据库中。
富察咪咪 2003-08-22
  • 打赏
  • 举报
回复
试试在VB中循环执行下面的语句
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条。
atlasGS 2003-08-22
  • 打赏
  • 举报
回复
gz
wdwd05 2003-08-22
  • 打赏
  • 举报
回复
每 1000 条 记录 为一次事务可取~~~但就是时间上有点...
arrow1971 2003-08-20
  • 打赏
  • 举报
回复
两位说得都很有道理,我想都试一下!谢谢了!
junglerover 2003-08-20
  • 打赏
  • 举报
回复
TO:arrow1971 (龙城之箭)
不必客气,举手之劳而已。

对于这个问题,我想说的是,在大数据量的情况下,即使使用DTS,仍然可能会出现死机状况。MICROSOFT的DTS这个东东功能非常强大,但是稳定性并不见得好。

我认为,导致死机的原因,是由于15万条记录一次导入,使得一个数据库事务(因为你使用一条SQL语句来完成此操作)过大。我这里没有什么特别好的建议,只能建议你用最笨的办法:在VB中开两个结果集对倒,每1000条记录COMMIT一次事务。这样,在用户能够忍受这种速度的情况下,稳定性应该是有保障的。即使在过程中出错,你的导入过程至少能够部分成功,只要你记录下出错点,还可以再来。
lihonggen0 2003-08-20
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=20536
dengyiwolf 2003-08-20
  • 打赏
  • 举报
回复
关注...........
myhgyp 2003-08-20
  • 打赏
  • 举报
回复
up一下
如何生成DTS包,如何用vb调用?
lihonggen0 2003-08-20
  • 打赏
  • 举报
回复
用DTS吧

生成DTS包,用vb调用
ymli 2003-08-20
  • 打赏
  • 举报
回复
当数据表记录数少时,该段程序有效吗?
另外,也可试试DTS服务.
wssqsh 2003-08-20
  • 打赏
  • 举报
回复
up
arrow1971 2003-08-20
  • 打赏
  • 举报
回复
请明示!
fslyw 2003-08-20
  • 打赏
  • 举报
回复
利用xml
arrow1971 2003-08-19
  • 打赏
  • 举报
回复
公司要下班了,期望回到家中打开电脑时能有惊喜!
arrow1971 2003-08-19
  • 打赏
  • 举报
回复
自定义存储过程执行也没用,有关数据库服务器之间复制表是不是有专门的系统存储过程提供,特别说明:上述语句是在性能一般的Win98机器上出现的问题,具体配置PIII550 128M,忘高手指点!
arrow1971 2003-08-19
  • 打赏
  • 举报
回复
已经作过设置,也没有用!
pengdali 2003-08-19
  • 打赏
  • 举报
回复
选中Microsoft SQL Servers-->工具栏,工具-->选项-->高级-->查询超时-->改为0

选中Microsoft SQL Servers-->工具栏,工具-->选项-->高级-->连接超时-->改为0


ADO

NonnectionTimeout 连接时间长一点;
CommandTimeout 执行时间长一点!
arrow1971 2003-08-19
  • 打赏
  • 举报
回复
设置了也没有用!
加载更多回复(2)

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧