MsSql

关注公众号 jb51net

关闭
首页 > 数据库 > MsSql > Windows SQL Server异地备份失败

Windows共享认证失效导致SQL Server异地备份失败的处理方法

作者:sysrootsa

SQL Server异地备份失败,别让SMB认证问题中断你的数据保护,本文手把手教你排查共享连接、删除旧凭据、重新认证,并修复传输脚本,学习如何确保备份文件完整传输到异地服务器,避免数据丢失风险,需要的朋友可以参考下

文中 IP 均为脱敏后的示例地址。

一、示例环境

项目示例信息
数据库服务器 IP10.10.10.113
异地备份服务器 IP10.10.20.192
数据库本地备份目录F:\databasebak
异地服务器本地目录F:\10.10.10.113
异地共享访问路径\\10.10.20.192\f\10.10.10.113
备份文件ES.EMS_backup_2026_07_05_020003.bak

异地备份服务器将本地 F:\ 共享为:

\\10.10.20.192\f 

因此,异地服务器本地目录:

F:\10.10.10.113 

在数据库服务器上对应的网络访问路径为:

\\10.10.20.192\f\10.10.10.113 

其中,目录名 10.10.10.113 对应数据库服务器的 IP。

二、问题现象

SQL Server 本地备份文件正常生成:

F:\databasebak\ES.EMS_backup_2026_07_05_020003.bak 

但传输脚本执行后,异地备份服务器目录中没有对应文件:

F:\10.10.10.113 

在数据库服务器上手工执行复制命令:

copy /Y "F:\databasebak\ES.EMS_backup_2026_07_05_020003.bak" "\\10.10.20.192\f\10.10.10.113\" 

提示:

用户名或密码不正确。 
已复制 0 个文件。 

查看返回码:

echo 返回码:%errorlevel% 

结果为:

返回码:1 

三、问题定位

检查确认:

最终确认:

当前 Windows 执行账户没有可用的异地 SMB 共享认证,或原共享连接中保存的认证信息已经不可用。

SMB 认证连接没有统一的固定失效时间,但以下情况可能导致原连接不可用:

四、处理步骤

1. 查看当前共享连接

在数据库服务器 CMD 中执行:

net use 

检查是否存在异地共享连接:

\\10.10.20.192\f 

2. 删除原有共享连接

net use "\\10.10.20.192\f" /delete 

如果提示未找到连接,可以忽略。

检查 Windows 是否保存了旧凭据:

cmdkey /list 

如存在异地服务器旧凭据,可删除:

cmdkey /delete:10.10.20.192 

3. 重新认证异地共享

net use "\\10.10.20.192\f" /user:10.10.20.192\Administrator * 

根据提示输入异地备份服务器账户密码。

密码输入时 CMD 不显示任何字符,属于正常现象。

认证成功后显示:

命令成功完成。 

认证到共享根目录即可,不需要指定到具体子目录。

4. 验证异地目录是否可以访问

dir "\\10.10.20.192\f\10.10.10.113" 

能够正常列出目录内容,说明共享路径和认证正常。

5. 验证异地目录写权限

echo test>"\\10.10.20.192\f\10.10.10.113\write_test.txt" 

然后在异地备份服务器检查:

F:\10.10.10.113\write_test.txt 

测试完成后删除:

del "\\10.10.20.192\f\10.10.10.113\write_test.txt" 

6. 手工复制备份文件

copy /Y "F:\databasebak\ES.EMS_backup_2026_07_05_020003.bak" "\\10.10.20.192\f\10.10.10.113\" 

对于几十 GB 的备份文件,copy 命令不会显示实时进度。命令窗口未返回提示符时,通常表示文件仍在传输,不要关闭窗口。

传输完成后显示:

已复制 1 个文件。 

检查返回码:

echo 返回码:%errorlevel% 

正常结果:

返回码:0 

7. 验证异地文件

在数据库服务器执行:

dir "\\10.10.20.192\f\10.10.10.113\ES.EMS_backup_2026_07_05_020003.bak" 

在异地备份服务器本机执行:

dir "F:\10.10.10.113\ES.EMS_backup_2026_07_05_020003.bak" 

查看本地文件大小:

dir "F:\databasebak\ES.EMS_backup_2026_07_05_020003.bak" 

本地与异地文件字节数一致,说明文件传输完整。

五、传输脚本整改

原脚本不能在复制命令执行后直接输出“传输成功”,必须检查返回码。

xcopy "%source_path%\%today_file%" "%dest_path%\" /Y /Z
if errorlevel 1 (
    echo [失败] 文件传输失败,返回码:%errorlevel%
    exit /b 1
)
echo [成功] 文件传输完成。

建议使用 robocopy 传输大文件:

robocopy "F:\databasebak" "\\10.10.20.192\f\10.10.10.113" "ES.EMS_backup_2026_07_05_*.bak" /Z /R:3 /W:10 

判断返回码:

if errorlevel 8 (
    echo [失败] Robocopy传输失败,返回码:%errorlevel%
    exit /b 2
)

Robocopy 返回码小于 8,通常不表示复制失败。

传输完成后,还应检查异地文件是否真实存在:

if not exist "\\10.10.20.192\f\10.10.10.113\备份文件名.bak" (
    echo [失败] 异地目录未找到备份文件。
    exit /b 3
)

六、计划任务注意事项

手工复制成功后,计划任务仍可能失败,因为 SMB 认证与 Windows 运行账户相关。

需要确认:

七、结论

本次问题不是备份文件、网络或异地共享目录异常,而是数据库服务器当前 Windows 执行账户缺少有效的 SMB 共享认证。

重新执行:

net use "\\10.10.20.192\f" /user:10.10.20.192\Administrator * 

再手工执行:

copy /Y "F:\databasebak\ES.EMS_backup_2026_07_05_020003.bak" "\\10.10.20.192\f\10.10.10.113\"

文件成功传输至异地服务器:

F:\10.10.10.113 

返回码为 0,问题解决。

到此这篇关于Windows共享认证失效导致SQL Server异地备份失败的处理方法的文章就介绍到这了,更多相关Windows SQL Server异地备份失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文