python - 无法在事务中执行备份或还原操作

标签 python sql pyodbc

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

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()

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

pyodbc.ProgrammingError:

('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 Driver][SQL Server]BACKUP DATABASE is terminating abnormally. (3013)')

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

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

非常感谢。

最佳答案

你的错误是

Cannot perform a backup or restore operation within a transaction.

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

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

pyodbc FAQ 有 an entry about this .

关于python - 无法在事务中执行备份或还原操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27443414/

相关文章:

python - 如何生成多个函数名?

python - 通过本地 ssh 配置 (~/.ssh/config) 的 PyCharm SSH 隧道

sql server结果表转图片

python - 使用 PyODBC 将参数传递给存储过程

sql-server - Pyodbc + FreeTDS + SQL Server + unicode 字符插入到 python 2.7 问题中的 nvarchar 列 - 'HY000' ,

python - Odoo扩展与继承

python - Python中Dijkstra算法绘制路径

sql - Oracle SQL MAX 函数在 VARCHAR 到 NUMBER 转换时不返回 max

php - SQL注入(inject)-通过URL访问

python - 如何使用 pyodbc 将 MS Access 连接到 Python