数据库高手请进! 来者有分! 解决问题者再送100分! 谢谢!

myhgyp 2003-08-15 03:02:28
Set adocon1 = New ADODB.Connection
adocon1.ConnectionString = "provider=sqloledb.1;server=localhost;UID=sa;PWD=;DATABASE=master;connect timeout=600"
adocon1.Open
adocon1.Execute "restore database hjtest from disk='d:\jgrz\ff1222' with replace,move 'hjtest_data' to 'c:\MSSQL7\Data\hjtest_data.mdf', move 'hjtest_log' to 'c:\MSSQL7\Data\hjtest_log.ldf'"
adocon1.Close

以上这段代码在配置比较好的机器上运行毫无问题,但在配置比较差的机器上运行则会出现以下错误:
实时错误 "-2147467259(80004005)"
超时已过期

注:代码为测试代码,运行环境为vb

请各位大侠指点一下迷津,谢谢!
...全文
30 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
arrow1971 2003-08-19
  • 打赏
  • 举报
回复
经多台机器反复测试,“灌木丛”的做法在任何情况下都不会出错,我谨代表公司的项目开发组向你致你最崇高的敬意!万分感谢!
miaoguangye 2003-08-17
  • 打赏
  • 举报
回复
龙城之箭的谦虚精神让人振奋。我是菜鸟,很佩服。
junglerover 2003-08-16
  • 打赏
  • 举报
回复
看来你的这段代码是用于数据库初始化的时候,的确有时利用 备份/恢复 的方式写数据库
会有问题,我也遇见过,如果你非要沿用这种技术路线的话,估计只能找 BILL GATES来解决
了。这里恐怕没有人帮得了你。

建议改为直接利用MDF和LDF文件,使用sp_attach_db来初始化数据库。
tangjinn 2003-08-16
  • 打赏
  • 举报
回复
做个存储过程, 在VB中调用
xiyupiaopiao 2003-08-16
  • 打赏
  • 举报
回复
学习!
叶帆 2003-08-16
  • 打赏
  • 举报
回复
说明一下:我在VB程序中,停止sql,在启动sql是可以正常使用的。
并且,以前一直好使,不知现在为何(是2000不断升级造成的???)
lxcc 2003-08-16
  • 打赏
  • 举报
回复
用SQL的客户端实用工具看看协议是不是TCP/IP,如果是Pipes,更换为TCP/IP试试
arrow1971 2003-08-16
  • 打赏
  • 举报
回复
为了测试方便,我把数据库中的20多张表全部清空,并且没有任何其它附带文件(索引、存储过程、触发器等)
lxcc 2003-08-16
  • 打赏
  • 举报
回复
你的表有没有索引,触发器
去掉试试
arrow1971 2003-08-16
  • 打赏
  • 举报
回复
再次补充说明:一共有2台奔III的“联宝”笔记本出现上述问题;正如叶帆提示的那样,我们一开始安装的是SQL2000,但在SQL查询分析器里仍然能够执行Restore语句,VB中就出现超时错误;因怀疑与Win98与SQL2000是否有匹配问题,因此重装换成SQL7.0,但同样是在SQL查询分析器中能执行,而在VB程序中却出错。另外,SQL的安装应该没有问题,因为无论是“企业管理器”、还是“查询分析器”,其功能一切正常!
lizfhn 2003-08-16
  • 打赏
  • 举报
回复
如果你的连接是正常的话!你可以把ado的timeout设为0吧!它这表示一直等!
叶帆 2003-08-16
  • 打赏
  • 举报
回复
还有,我机子的配置:硬盘150G cpu P4 1.7 ,内存DDR256
叶帆 2003-08-16
  • 打赏
  • 举报
回复
我也遇到过类似情况,我的系统平台:win2000 server+sql7.0

症状:程序打不开sql,提示Err.Number = -2147467259,与楼主一样。
直接在EnterPrise Manager打开相应的库,也失败。

解决办法:1、重装sql(早期我就是这样处理的)
2、把 sql服务停止,再启动(一般都好使)

注:我的sql为盗版,2000为正版。但在别的机器上没有这个问题。并且机子一重新启动sql又出问题。

我认为基本是sql的问题,有可能一些相关服务给禁止了(我曾配置过win2000服务)
arrow1971 2003-08-16
  • 打赏
  • 举报
回复
想不到“丛莲”的一句提醒竟产生了奇迹:我在主服务器上创建了一个新库,并将该库的所有表从原来程序测试的库中全部倒入(当然主键是丢失了,不过可以重建),然后再将新库生成备份文件,在原环境中用同样的Restore命令居然成功了,进一步测试,不论是含有26张表的仅有2.5M的测试用备份文件,还是含有58张表的有26M的真实数据备份文件,全部成功了!
因为这个项目不是我参与的,所以这种方法会不会最终成功,还必须在其它Win98机器上作进一步测试,不过,不管怎样,事情总是出现了重大转机!让人振奋!
联想到的问题:当初用于备份/还原的数据库,会不会是因为数据表的设置主键后自动创建索引,而该索引遭到了破坏,从而导致在SQL查询分析器中能成功运行RESTORE语句,或者在WIN2000环境下VB语句能顺利执行,而在WIN98环境下VB语句却不能顺利执行。我试着用DBCC CHECKDB命令校验过数据库,没有任何错误。就数据库的校验问题,是不是还有其它好的方法,望各位高手再次明示!
“灌木丛”提醒的方法我正在尝试中,一并表示感谢!
junki 2003-08-16
  • 打赏
  • 举报
回复
你那个比较差的机子是些什么配置呢?
支不支持64位浮点运算叱?
如果不支持的话,可能由于数字太大而产生了溢出
arrow1971 2003-08-15
  • 打赏
  • 举报
回复
周末全都狂欢去了!
arrow1971 2003-08-15
  • 打赏
  • 举报
回复
怎么没有人理我!郁闷!等待中......
arrow1971 2003-08-15
  • 打赏
  • 举报
回复
对不起,我又回来了,这几天公司较忙,家中机器遗忘了几天,突然上网,忘记打补丁,中了冲击波,倒霉,各相关网站阻塞,不过,我又回来了!

楼上兄弟的方法应该没有,因为一开始我们就用的机器名!
feihong0233 2003-08-15
  • 打赏
  • 举报
回复
"provider=sqloledb.1;server=localhost;UID=sa;PWD=;DATABASE=master;connect timeout=600"

试一试,使用机器名来访问呢?
server=computername
arrow1971 2003-08-15
  • 打赏
  • 举报
回复
关于这个问题,我来补充一下,因为我们是一个公司的,具体情况为:
硬件环境:奔III 500,128M内存,10G硬盘,为“联宝”笔记本;
软件环境:Win98 + SQL7.0

在SQL查询分析器中:执行restore database hjtest from disk='d:\jgrz\ff1222' with replace,move 'hjtest_data' to 'c:\MSSQL7\Data\hjtest_data.mdf', move 'hjtest_log' to 'c:\MSSQL7\Data\hjtest_log.ldf',每次都成功,花费时间50秒到
70秒;
在VB环境中同样语句运行,总是超时错误,经“大力”等高手指点,将connecttimeout、
commandtimeout时间设长,也是无济于事,也为我们语句执行中早就终止了,只不过报错信息必须等预定的超时时间到了才跳出;
问题的奇怪之处:同样的语句为什么不能在VB中运行,另外如果备份库文件很大16M,但是数据表只有2张,VB中运行成功,但是数据库备份文件很小3M,而数据表有20多张(具体表现为10张以上),VB中却不能成功。
这个问题整整困住了我们开发组3个人3天时间,因为这是在项目发行前作最后测试时发生的致命错误。
特别声明:如果机器软件环境为2000系统,同样的语句运行中不会出现上述问题。但从市场推广的角度,不可能对用户的机器有特别的要求,所以大声疾呼:各位高手,Help us!!!
加载更多回复(19)

1,216

社区成员

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

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