如何在自动提交模式下备份数据库关闭
How to backup database in autocommit mode off
我使用 ODBC 连接来备份数据库。我的代码是这样的:
UPDATE [ATIDGEN] SET [LASTID] = '25' WHERE [TABLEID] = 'ATLOGIN';
//success
::SQLEndTran(SQL_HANDLE_DBC, m_hdbc, SQL_COMMIT);
//success
BACKUP DATABASE [ArazDB2] TO DISK = 'D:\Amin88\Total\BKUP-13950621.BAK' WITH INIT,NOSKIP
//state 42000, Cannot perform a backup or restore operation within a transaction.
如果我删除上面的 UPDATE 命令,备份 returns SQL_SUCCESS_WITH_INFO 和 sql-server 日志报告如下:
//BACKUP 未能完成命令 BACKUP DATABASE ArazDB2。检查备份应用程序日志以获取详细消息,但备份文件已创建!。
1- 更新后,为什么 sql-server 在交易中?我明确调用了 SQLEndTran。
2-没有更新,为什么sql-服务器日志报告备份失败,但是备份文件已经创建?
谁能帮帮我?
好像有生活交易
使用 sql 脚本关闭与数据库的所有现有连接:
alter database mydb set single_user with rollback immediate
备份结束时,运行脚本:
ALTER DATABASE mydb SET MULTI_USER
更新
SQL 服务器在任何数据定义语言 (DDL) 语句前后发出隐式 COMMIT。
BACKUP 命令被视为 DDL,需要隐式提交。
由于数据库关闭了autocommit,备份前开启autocommit,备份后关闭。
conn.autocommit = true
BACKUP DATABASE [ArazDB2] TO DISK = 'D:\Amin88\Total\BKUP-13950621.BAK' WITH INIT,NOSKIP
conn.autocommit = false
我使用 ODBC 连接来备份数据库。我的代码是这样的:
UPDATE [ATIDGEN] SET [LASTID] = '25' WHERE [TABLEID] = 'ATLOGIN';
//success
::SQLEndTran(SQL_HANDLE_DBC, m_hdbc, SQL_COMMIT);
//success
BACKUP DATABASE [ArazDB2] TO DISK = 'D:\Amin88\Total\BKUP-13950621.BAK' WITH INIT,NOSKIP
//state 42000, Cannot perform a backup or restore operation within a transaction.
如果我删除上面的 UPDATE 命令,备份 returns SQL_SUCCESS_WITH_INFO 和 sql-server 日志报告如下: //BACKUP 未能完成命令 BACKUP DATABASE ArazDB2。检查备份应用程序日志以获取详细消息,但备份文件已创建!。 1- 更新后,为什么 sql-server 在交易中?我明确调用了 SQLEndTran。 2-没有更新,为什么sql-服务器日志报告备份失败,但是备份文件已经创建? 谁能帮帮我?
好像有生活交易
使用 sql 脚本关闭与数据库的所有现有连接:
alter database mydb set single_user with rollback immediate
备份结束时,运行脚本:
ALTER DATABASE mydb SET MULTI_USER
更新
SQL 服务器在任何数据定义语言 (DDL) 语句前后发出隐式 COMMIT。
BACKUP 命令被视为 DDL,需要隐式提交。
由于数据库关闭了autocommit,备份前开启autocommit,备份后关闭。
conn.autocommit = true
BACKUP DATABASE [ArazDB2] TO DISK = 'D:\Amin88\Total\BKUP-13950621.BAK' WITH INIT,NOSKIP
conn.autocommit = false