提问人:dunnadad 提问时间:11/7/2023 最后编辑:Thom Adunnadad 更新时间:11/21/2023 访问量:56
使用 Python 将 .bak 文件还原到 MSSQL
Restore .bak file to MSSQL using Python
问:
我撞到了一堵砖墙。我尝试了各种形式并通过权限等进行故障排除。 最终,我尝试使用 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 驱动程序] [SQL Server] 无法打开备份设备'C:\数据库\原始数据文件\新数据库文件'。操作系统错误 5(访问被拒绝。(3201) (SQLExecDirectW);[42000] [Microsoft] [ODBC SQL Server 驱动程序] [SQL Server] 还原数据库异常终止。(3013)")
答:
1赞
AshMas
11/21/2023
#1
我认为您的代码中有一个错别字:
conn_str = f'DRIVER={{SQL Server}};SERVER={server_namer};DATABASE={database_name};UID={username};PWD={password}'
替换为和其余代码就可以了。'server_namer'
'server_name'
最好
评论
RESTORE
RESTORE DATABASE @db FROM DISK = @file
backup_file_path