如何在自动提交模式下备份数据库

时间:2016-09-11 11:08:41

标签: sql-server odbc

我使用ODBC连接来备份数据库。我的代码是这样的:

java -jar closure-compiler-v20160713.jar
The compiler is waiting for input via stdin.
let a= new Test ();
^Z
var a=new Test;

如果我删除上面的UPDATE命令,则备份返回SQL_SUCCESS_WITH_INFO,并且sql-server logs报告: // BACKUP无法完成命令BACKUP DATABASE ArazDB2。检查备份应用程序日志以获取详细消息,但是已创建备份文件! 1-更新后,为什么sql-server在交易中?我明确地调用了SQLEndTran。 2-没有更新,为什么sql-server日志报告备份失败,但是创建了备份文件? 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

似乎有生命交易。

使用sql脚本关闭与数据库的所有现有连接:

   alter database mydb  set single_user with rollback immediate

在备份结束时,运行脚本:

   ALTER DATABASE mydb  SET MULTI_USER 

<强>更新

SQL Server在任何数据定义语言(DDL)语句之前和之后发出隐式COMMIT。

BACKUP命令被认为是DDL,需要隐式COMMIT。

由于数据库处于自动提交状态,请在备份前打开自动提交,然后在备份后关闭。

conn.autocommit = true
BACKUP DATABASE [ArazDB2] TO DISK = 'D:\Amin88\Total\BKUP-13950621.BAK' WITH INIT,NOSKIP
conn.autocommit = false