用vc连sqlserver,用backup database备份数据库,可是用restore database还原的时候...

emmai 2002-07-17 04:59:00
我在查询分析器里面,执行
restore database mydb from disk='1.dat'
可以成功执行。
可是,在vc程序里,执行这样的语句,sqlserver说“超时已过期”。
sqlserver 就在本地,我把超时的时间设置得很长也不行。
点解呢?

...全文
113 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
small_wei 2002-08-03
  • 打赏
  • 举报
回复
因为你在程序中已经连接到了要恢复的数据库上,而恢复数据库是需要独占数据库的,所以出错。正确的做法是,重新定义一个新的连接,这个连接用户必需据有对数据库的操作权限,连接默认的数据定义为其他数据库,如master,然后在程序中用这个新建连接连接到数据库,再运行restore database mydb from disk='1.dat'就行了
howtotell 2002-08-03
  • 打赏
  • 举报
回复
small_wei(small) 的做法好像也不行,去年做课程设计我也做过.没有成功,最后解决的方法是,shellexecute isqlw,然后找到isqlw查询窗口的句柄,然后再setwindowtext,让用户点击一下那个小▲就可以恢复了.
small_wei 2002-08-03
  • 打赏
  • 举报
回复
备份:
CDatabase db;
CString s1;
s1.Format("ODBC;UID=sa;PWD=%s","wei147");
db.Open("odbcname",false,false,s1);
s1.Format("backup database report to disk='e:\\report.bak\\backs.dat'"); //备份到E:\report.bak\backs.dat
db.ExecuteSQL(s1);
恢复:
恢复时用户不能打开要恢复的数据库
CDatabase db1;
s1.Format("ODBC;UID=sa;PWD=%s","wei147");
db1.Open("odbcname",false,false,s1);
s1.Format("restore database report from disk='c:\\report.bak\\backs.dat'");
db1.ExecuteSQL(s1);
db1.Close();
VC++ODBC做的
small_wei 2002-08-03
  • 打赏
  • 举报
回复
我的办法没有问题,我已在多个程序中在使用

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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