Jak wykonać kopię zapasową bazy danych przez pyodbc

Instrukcja kopii zapasowej nie może być użyta w transakcji, gdy jest wykonywana za pomocą kursora pyodbc. Wydaje się, że pyodbc wykonuje zapytanie wewnątrz domyślnej transakcji. Próbowałem również użyć trybu automatycznego zatwierdzania lub dodać instrukcję zatwierdzania przed instrukcją tworzenia kopii zapasowej. Oba nie działają.

#can't execute the backup statement in transaction
cur.execute("backup database database_name to disk = 'backup_path'")
#not working too
cur.execute("commit;backup database database_name to disk = 'backup_path'")

Czy możliwe jest wykonanie oświadczenia kopii zapasowej przez pyodbc? Z góry dziękuję!

----- Dodano dodatkowe informacje ------------------------------------------ -----------------------------

Operacja tworzenia kopii zapasowej jest hermetyzowana w funkcji takiej jak:

def backupdb(con, name, save_path):
    # with autocommit mode, should be pyodbc.connect(con, autocommit=True)
    con = pyodbc.connect(con) 
    query = "backup database %s to disk = '%s'" % (name, save_path)
    cur = con.cursor()
    cur.execute(query)
    cur.commit()
    con.close()

Jeśli funkcja jest wywoływana za pomocą następującego kodu,

backupdb('DRIVER={SQL Server};SERVER=.\sqlexpress;DATABASE=master;Trusted_Connection=yes',
             'DatabaseName',
             'd:\\DatabaseName.bak')

wtedy wyjątkiem będzie:

File "C:/Documents and Settings/Administrator/Desktop/bakdb.py", line 14, in <module>'d:\\DatabaseName.bak')
File "C:/Documents and Settings/Administrator/Desktop/bakdb.py", line 7, in backupdb cur.execute(query)
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)')

Po otwarciu słowa kluczowego autocommit = True funkcja będzie działać cicho, ale w folderze kopii zapasowej nie ma pliku kopii zapasowej.

questionAnswers(1)

yourAnswerToTheQuestion