我正在尝试编写一个能够从Microsoft SQL Server数据库导入和导出特定数据库以及用户和登录的程序。我的代码和ODBC之间有一个抽象层,我们的其他很多软件都使用它。抽象层通常在autocommit off的情况下运行并自行处理事务,但由于BACKUP命令不喜欢在任何事务中运行,我使用的是另一个名为executeDirect的层的方法,它使用autocommit on来运行它。
该方法使用SQLExecDirect函数运行BACKUP命令。完成后,该函数返回SUCCESS_WITH_INFO,因为BACKUP命令喜欢提供三行输出。然后代码尝试使用SQLGetDiagField获取输出,并且能够从记录#1收集第一行,但是没有记录#2。
该方法要做的最后一件事是将连接重置为自动提交关闭,但是当它尝试时,发生错误,说“连接正忙于另一个命令的结果”,SQL状态为“HY000”。所以,显然,连接想要汇出其他两行输出,但我不知道如何让它这样做。
答案 0 :(得分:1)
BACKUP DATABASE命令作为批处理工作,需要调用SQLMoreResults才能继续备份。