gpt4 book ai didi

python - 错误 : "Cannot perform a backup or restore operation within a transaction." when trying to backup MSSQL database using pyodbc and freetds

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:03 25 4
gpt4 key购买 nike

当我尝试使用 pyodbc 和 freetds 从 Linux 主机备份 MSSQL 数据库时,我目前遇到了一些问题。版本如下:

Python 2.7.6、pyodbc 3.0.7、freetds 0.91-2、Centos 6.5

我正在运行的代码如下(删除了名称和密码等):

import pyodbc

conn = pyodbc.connect('DRIVER=FreeTDS;SERVER=<servername>;PORT=<port>;DATABASE=<database>;UID=<user>;PWD=<password>;TDS_Version=8.0;Autocommit=True;')
sql = "exec dbo.backupStashDB"
cursor=conn.cursor().execute(sql)
while cursor.nextset():
pass
conn.close()

我得到的错误信息是:

exec dbo.backupnameDB
Traceback (most recent call last):
File "soph_stash_db_bkp.py", line 6, in <module>
conn.execute(sql)
pyodbc.ProgrammingError: ('42000', '[42000] [FreeTDS][SQL Server]Cannot perform a backup or restore operation within a transaction. (3021) (SQLExecDirectW)')

无论我是“手动”运行命令还是通过存储过程运行命令(如本代码示例中所示),我都会收到相同的消息。

我进行了一些谷歌搜索,发现对添加“Autocommit=True”的引用可以解决此问题,但这似乎根本没有任何区别。

有人对此有任何有用的见解可以分享吗?

提前致谢,迈克

最佳答案

autocommit 应指定为 pyodbc.connect 的关键字参数函数,它不是 ODBC 连接字符串的一部分。请参阅以以下内容开头的部分:

一些关键字被 pyodbc 使用,没有传递给 odbc 驱动程序......


将您的代码修改为以下内容:

...
conn = pyodbc.connect('DRIVER=FreeTDS;SERVER=<servername>;PORT=<port>;DATABASE=<database>;UID=<user>;PWD=<password>;TDS_Version=8.0;',
autocommit=True)
...

关于python - 错误 : "Cannot perform a backup or restore operation within a transaction." when trying to backup MSSQL database using pyodbc and freetds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25167865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com