Navicat 16 不支持直接备份 SQL Server 到云存储,仅能生成 .bak 文件至本地或 UNC 路径;需通过 SQL Server 自身备份 + UNC 中转或 PowerShell 上传实现云备份,核心在于确保服务账户权限与路径可达性。

Navicat 16 本身不能直接把 SQL Server 数据库备份到云存储(如阿里云 OSS、腾讯云 COS、OneDrive 或 Dropbox);它只支持生成 .bak 文件并写入 SQL Server 实例能访问的本地磁盘或网络路径。 所有“直连云存储”的说法,本质是绕过 Navicat 的备份界面,用 SQL Server 自身能力 + 外部工具间接实现。
为什么 Navicat 的“SQL Server 备份”按钮不支持云路径
Navicat 点击“SQL Server 备份”后,实际提交的是标准 T-SQL:BACKUP DATABASE [db_name] TO DISK = 'C:path oile.bak'。SQL Server 引擎只接受本地路径、UNC 路径(\servershareile.bak),不支持 https://、s3:// 或挂载为驱动器的云同步目录(如 OneDrive 同步文件夹),因为:
- SQL Server 服务账户无权调用云 SDK 或处理 OAuth 认证
- Navicat 不解析或转译你填的“云路径”,只是原样传给 SQL Server 执行
- 即使你填了
D:OneDriveackup.bak,若该目录尚未完成同步或被 OneDrive 暂停,SQL Server 写入会失败并报错Operating system error 5: "Access is denied."
可行方案:用 SQL Server + UNC 共享中转到云存储
真正落地的做法是:在云存储上创建一个可映射为网络驱动器的共享(如 NAS、Samba 服务、或 Windows Server 搭建的 SMB 共享),再让 SQL Server 把 .bak 写进去。Navicat 只负责触发这个过程。
具体操作要点:
- 在云服务器或私有 NAS 上启用 SMB 服务,开放读写权限,并确保 SQL Server 服务账户(如
NT SERVICEMSSQLSERVER)能通过用户名/密码认证访问该共享 - 在 Navicat 备份对话框中,路径必须填 UNC 格式,例如:
\192.168.100.50sql_backupmydb_20261020.bak,不能填映射后的盘符(如Z:mydb.bak)——SQL Server 不认客户端映射 - 若用公有云对象存储(OSS/COS),需额外部署一个中间服务(如用 Python + boto3/s3fs 挂载为本地磁盘),但该挂载点仍需对 SQL Server 服务账户可见且稳定,实践中故障率高,不推荐生产环境使用
更可靠替代:用 SQL Server Agent + PowerShell 脚本上传
如果你已启用 SQL Server Agent,可以完全绕开 Navicat,用作业调度 + 命令行完成“本地备份 → 上传云存储”闭环:
- 第一步:用
BACKUP DATABASE语句把.bak写到 SQL Server 本地固定路径(如C:MSSQLBackup) - 第二步:用
xp_cmdshell或 SQL Server Agent 的“操作系统(CmdExec)”步骤,调用 PowerShell 脚本上传,例如:aws s3 cp C:MSSQLBackupmydb.bak s3://my-bucket/backups/ - 注意:
xp_cmdshell默认禁用,需先执行sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure 'xp_cmdshell', 1; RECONFIGURE;,且运行账号必须有云 CLI 的凭证配置(~.awscredentials)
容易忽略的关键权限点
无论走 UNC 还是脚本上传,最常卡住的地方不是 Navicat 设置,而是权限链断裂:
- SQL Server 服务账户对备份目标路径没有“写入”和“修改”权限(尤其 Windows Server 默认拒绝 SYSTEM 以外账户写 C:)
- UNC 共享的 NTFS 权限和共享权限未同时授予 SQL Server 账户(二者是“与”关系,缺一不可)
- 云 CLI 凭据配置在错误用户上下文下(比如你用管理员登录配了 aws configure,但 SQL Server Agent 以 LocalSystem 运行,根本读不到)
- 防火墙或安全组阻断了 SMB 端口(445)或云 API 端口(如 AWS 443)
真正跑通前,建议先在 SQL Server Management Studio 中手动执行一次 BACKUP 到目标路径,确认无权限错误,再接入 Navicat 或调度任务。云存储不是备份终点,而是传输链的一环;稳住 SQL Server 本地写入这第一跳,后面才谈得上传。











