无法在事务中执行备份或恢复操作 [英] Cannot perform a backup or restore operation within a transaction

查看:49
本文介绍了无法在事务中执行备份或恢复操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 PyODBC 备份我的数据库,使用以下代码:

I am using PyODBC to back up my database, using following code:

SQL_command = """
                BACKUP DATABASE [MyDatabase]
                TO DISK = N'D:\MSSQL\BACKUP\MyDatabase_20141212.bak' WITH
                      NOFORMAT
                ,     NOINIT
                ,     NAME = N'MyDatabase_20141212'
                ,     SKIP
                ,     REWIND
                ,     NOUNLOAD
                ,     STATS = 10
              """

conn.cursor.execute(SQL_command)

conn.cursor.commit()

上面的代码给了我一个错误信息:

The above code give me an error message:

pyodbc.ProgrammingError:

pyodbc.ProgrammingError:

('42000', '[42000] [Microsoft][ODBC SQL服务器驱动程序][SQL Server]无法执行备份或还原操作在一个交易中.(3021) (SQLExecDirectW);

('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot perform a backup or restore operation within a transaction. (3021) (SQLExecDirectW);

[42000] [Microsoft][ODBC SQL Server 驱动程序][SQL Server]BACKUP DATABASE 是异常终止.(3013)')

[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]BACKUP DATABASE is terminating abnormally. (3013)')

我尝试在 SQL Server 中运行 SQL 代码,它运行良好.

I tried to run the SQL code in SQL Server, and it works fine.

我可以知道我的代码有什么问题吗?

May I know what is wrong with my code?

非常感谢.

推荐答案

你的错误说明

无法在事务内执行备份或恢复操作.

Cannot perform a backup or restore operation within a transaction.

事务在pyodbc中默认启动,那么如何在不创建事务的情况下执行查询?只需打开自动提交:

Transactions are started by default in pyodbc, so how do you execute a query without creating a transaction? Simply turn on autocommit:

conn.autocommit = true
// do stuff
conn.autocommit = false

pyodbc 常见问题有关于此的条目.

The pyodbc FAQ has an entry about this.

这篇关于无法在事务中执行备份或恢复操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆