gpt4 book ai didi

sql-server - Pyodbc - SQL Server 数据库还原不完整

转载 作者:行者123 更新时间:2023-12-05 02:07:25 28 4
gpt4 key购买 nike

我正在尝试使用以下脚本从 Windows 中的 python 3.7 恢复数据库。

Drop 数据库按预期正常运行。

恢复数据库未按预期工作,数据库始终显示“正在恢复...”并且永远不会完成。

指定路径下有数据库文件,但数据库不可用。

如何解决这个问题?

import pyodbc

try:
pyconn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=MY-LAPTOP\\SQLEXPRESS;DATABASE=master;UID=sa;PWD=sa123')
cursor = pyconn.cursor()
pyconn.autocommit = True
sql = "IF EXISTS (SELECT 0 FROM sys.databases WHERE name = 'data_test') BEGIN DROP DATABASE data_test END"
pyconn.cursor().execute(sql)

sql = """RESTORE DATABASE data_test FROM DISK='G:\\dbbak\\feb-20-2020\\data_test_backup_2020_02_20_210010_3644975.bak' WITH RECOVERY,
MOVE N'Omnibus_Data' TO N'd:\\db\\data_test.mdf',
MOVE N'Omnibus_Log' TO N'd:\\db\\data_test_1.ldf';"""
print(sql)
pyconn.cursor().execute(sql)
while pyconn.cursor().nextset():
pass
pyconn.cursor().close()
except Exception as e:
print(str(e))

最佳答案

您没有使用单个游标,因此您的程序在恢复完成之前退出,并在中间中止。

应该是这样的:

conn = pyodbc.connect(' . . .')
conn.autocommit = True
cursor = conn.cursor()
cursor.execute(sql)
while cursor.nextset():
pass
cursor.close()

关于sql-server - Pyodbc - SQL Server 数据库还原不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61838573/

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