我遇到了砖墙。我尝试了各种形式并通过权限等进行故障排除。最终,我尝试使用 python 将 .bak 文件恢复到 MSSQL。我可以通过 MS Server Management Studio 手动恢复,但是,我想自动执行恢复和删除功能,以便我可以运行一系列数据库来执行查询。
我对此进行了详细研究,但找不到解决方案。任何帮助将不胜感激。
下面是我的返回代码;
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)")
我认为您的代码中有一个拼写错误,如下所示:
conn_str = f'DRIVER={{SQL Server}};SERVER={server_namer};DATABASE={database_name};UID={username};PWD={password}'
将
'server_namer'
替换为 'server_name'
,其余代码就可以了。
最好