我目前正在尝试使用运行后台的Python 3.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())
但是,我收到此错误。我100%确信文件夹
C:\Users\Malek\Documents\PYSQLBS\Backups
存在,因为我直接在命令行中测试了该命令,并且运行良好。消息3201,级别16,状态1,服务器MYSERVER \ SQLSERVICE,第1行
无法打开备份设备'C:\ Users \ Malek \ Documents \ PYSQLBS \ Backups \ 2019-09
-09-16:24:46.bak'。操作系统错误123(文件名,目录名或卷标签语法不正确。)。
消息3013,级别16,状态1,服务器MYSERVER \ SQLSERVICE,
1号线
BACKUP DATABASE异常终止。
最佳答案
问题是备份文件名称中的:
字符:2019-09 -09-16:24:46.bak
Windows文件夹和文件路径不能包含:
字符,除非在分隔驱动器号时,例如:C:\foo\bar.txt
可以。 C:\foo\bar:::baz.txt
不是。