无法在事务中执行备份或恢复操作 [英] Cannot perform a backup or restore operation within a transaction
问题描述
我正在使用 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屋!