使用Python将.bak文件恢复到MSSQL

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

我遇到了砖墙。我尝试了各种形式并通过权限等进行故障排除。最终,我尝试使用 python 将 .bak 文件恢复到 MSSQL。我可以通过 MS Server Management Studio 手动恢复,但是,我想自动执行恢复和删除功能,以便我可以运行一系列数据库来执行查询。

  • Python 3.11.5 通过 Anaconda 环境
  • Jupyter 笔记本
  • 用户体验是名义上的

我对此进行了详细研究,但找不到解决方案。任何帮助将不胜感激。

下面是我的返回代码;

import pyodbc

server_name = 'DESKTOP-OEBL7M5\\FYRE'
database_name = 'shell'
target_database_name = 'Hoosker_Doo_6H'
windows_authentication = True
username = 'DESKTOP-OEBL7M5\\BKR'
password = None
backup_file_path = 'C:\\Database\\Raw Data Files\\New Database Files'

if windows_authentication:
    conn_str = f'DRIVER={{SQL Server}};SERVER={server_name};DATABASE={database_name};Trusted_Connection=yes;'
else:
    conn_str = f'DRIVER={{SQL Server}};SERVER={server_namer};DATABASE={database_name};UID={username};PWD={password}'

try:
    conn = pyodbc.connect(conn_str)
    cursor = conn.cursor()
except Exception as e:
    print(f"Error: {e}")

restore_query = f'''
RESTORE DATABASE {target_database_name}
FROM DISK = '{backup_file_path}'
WITH REPLACE, RECOVERY;
'''

try:
    conn.autocommit = True
    cursor.execute(restore_query)
    print(f"Databse '{target_database_name}' restored successfully!")
except Exception as e:
    print(f"Error: {e}")
finally:
    conn.autocommit = False
    if conn is not None:
        conn.close()

错误:('42000',“[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]无法打开备份设备 'C:\Database\Raw Data Files\New Database Files'。操作系统错误 5(Access被拒绝。)。(3201) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server 驱动程序][SQL Server]RESTORE DATABASE 异常终止。(3013)")

python sql-server pyodbc
1个回答
0
投票

我认为您的代码中有一个拼写错误,如下所示:

conn_str = f'DRIVER={{SQL Server}};SERVER={server_namer};DATABASE={database_name};UID={username};PWD={password}'

'server_namer'
替换为
'server_name'
,其余代码就可以了。

最好

© www.soinside.com 2019 - 2024. All rights reserved.