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

问题描述 投票:0回答:1

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

删除数据库正常运行。

还原数据库无法正常工作,数据库始终显示“正在还原...。”,并且从未完成。

数据库文件在指定的路径中,但是数据库不可用。

如何解决此问题?

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))
sql-server pyodbc restore
1个回答
0
投票

您没有使用单个光标,并且在还原完成之前您的程序正在退出,并在中间中断了该程序。

应该是这样的:

conn = pyodbc.connect(' . . .')
conn.autocommit = True
cursor = conn.cursor()
cursor.execute(sql)
while cursor.nextset():
    pass 
cursor.close()
© www.soinside.com 2019 - 2024. All rights reserved.