操作系统错误123,通过子进程备份SQL数据库

2024-05-16 05:23:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试使用在后台运行的python3.7应用程序自动备份数据库。我使用以下查询字符串成功地备份了数据库。在

SQLCommand = ("sqlcmd -E -S %s -Q \"BACKUP DATABASE %s TO DISK=\'%s\%02d-%02d-%02d-%02d:%02d:%02d.bak\'\"" % 
("MYSERVER\SQLSERVICE", "MyDatabase", 
"C:\\Users\Malek\Documents\PYSQLBS\Backups",
CDT.year, CDT.month, CDT.day, CDT.hour, CDT.minute, CDT.second))
...
print(subprocess.Popen(SQLCommand, shell=True, stdout=subprocess.PIPE).stdout.read())

但是,我得到了这个错误。我百分之百确定文件夹C:\Users\Malek\Documents\PYSQLBS\Backups存在,因为我直接在命令行中测试了该命令,并且它工作得非常好。在

Msg 3201, Level 16, State 1, Server MYSERVER\SQLSERVICE, Line 1
Cannot open backup device 'C:\Users\Malek\Documents\PYSQLBS\Backups\2019-09 -09-16:24:46.bak'. Operating system error 123(The filename, directory name, or volume label syntax is incorrect.).
Msg 3013, Level 16, State 1, Server MYSERVER\SQLSERVICE, Line 1
BACKUP DATABASE is terminating abnormally.


Tags: 数据库stdout备份usersdatabasebackupdocumentssubprocess
1条回答
网友
1楼 · 发布于 2024-05-16 05:23:24

问题是备份文件名中的:字符:2019-09 -09-16:24:46.bak

Windows文件夹和文件路径不能包含:字符,除非在限定驱动器号时,例如:C:\foo\bar.txt可以。C:\foo\bar:::baz.txt不是。在

相关问题 更多 >