You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyodbc备份MSSQL至远程服务器时默认路径自动追加问题

问题:Python通过pyodbc备份SQL Server到远程共享时默认路径被自动追加

错误信息

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot open backup device 'E:\Data\MSSQL15.MSSQLSERVER\MSSQL\Backup\REMOTESERVER\SHARE\foobar.bak'. Operating system error 3(The system cannot find the path specified.). (3201) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]BACKUP DATABASE is terminating abnormally. (3013)")

环境信息

  • Python 3.10.13、pyodbc 5.0.1(Windows 10系统)
  • SQL Server Express 15.0.2104
  • 目标服务器:Windows Server 2019,共享权限已包含SQL Server主机名

已知情况

  • 仅保留文件名时,备份命令可执行,但文件会存入SQL Server默认备份路径
  • 在SSMS中执行BACKUP DATABASE BaseData TO DISK = '\\REMOTESERVER\SHARE\foobar.bak'可正常完成备份

代码示例

import pyodbc

# Connection parameters
server = 'SQLServer'
database = 'BaseData'
username = 'User'
password = 'Password'

# Create a connection object
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + server + ';DATABASE=' + database + ';UID=' + username + ';PWD=' + password)
conn.autocommit = True
# Create a cursor object
cursor = conn.cursor()

# Backup command 
backup_command = """BACKUP DATABASE BaseData TO DISK = '//REMOTESERVER/SHARE/foobar.bak';"""

# Execute the backup command
cursor.execute(backup_command)
# Process return to avoid error
while (cursor.nextset()):
    pass

解决方法

核心问题是路径格式不兼容:SQL Server在Windows环境下仅识别反斜杠\作为路径分隔符,你使用的类Unix正斜杠//会被识别为相对路径前缀,导致SQL Server自动将其追加到默认备份目录后。

修正方案有两种:

  1. 转义反斜杠:在Python字符串中用双反斜杠\\表示单个路径反斜杠(Python中反斜杠是转义字符)

    backup_command = """BACKUP DATABASE BaseData TO DISK = '\\\\REMOTESERVER\\SHARE\\foobar.bak';"""
    
  2. 使用原始字符串:在字符串前加r,避免Python解析转义字符,直接传递正确的UNC路径给SQL Server

    backup_command = r"""BACKUP DATABASE BaseData TO DISK = '\\REMOTESERVER\SHARE\foobar.bak';"""
    

逻辑验证:SSMS中无需转义反斜杠即可直接使用UNC路径,但Python字符串中必须通过转义或原始字符串处理,才能让SQL Server接收到正确的远程共享路径,避免被识别为相对路径。

内容的提问来源于stack exchange,提问作者Joel-Brooks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:52:36