遇到一个SqlServer的怪异问题,裹足不前,请各路大侠帮忙一看。
通过ODBC访问SqlServer 2005,执行备份语句,
use master backup database XXX to disk 'c:\ab.dat'
然后眼睁睁看着备份文件生成,然后自动又消失。实在摸不着头脑。
PS:
程序是C++的,登录用户不是SA,是新建立的一个拥有管理员权限的用户。同时这个程序和服务器不在同一个OS。
这个问题据说上次有人遇到过,解决方式是让工作线程等待几秒钟。但是据我的观察,语句执行完毕后,不等连接关闭,备份文件自动就消失了。。。。。
太神奇了。
同样的语句,在数据库管理器中执行时没有问题的。
坐等各路大侠拔刀相助。
找到解决方案:
首先,为什么文件会自动删除,应该是Sql2005 Native Client执行完backup命令后,会有一个通信等待一个事件,应该是服务器给客户端送点东西,如果等不到,就把完成的工作取消了。
解决方案,我在ODBC调用中,执行完sql语句之后,在调用
SQL_API SQLRowCount(SQLHSTMT StatementHandle, SQLLEN* RowCount);
之前,调用Sleep,就OK了。又是曲线救国