我目前正在尝试使用运行后台的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不是。

09-25 17:17