首页/发现新知
视界 · 深度阅读

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

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

目录
  • 一、示例环境
  • 二、问题现象
  • 三、问题定位
  • 四、处理步骤
    • 1. 查看当前共享连接
    • 2. 删除原有共享连接
    • 3. 重新认证异地共享
    • 4. 验证异地目录是否可以访问
    • 5. 验证异地目录写权限
    • 6. 手工复制备份文件
    • 7. 验证异地文件
  • 五、传输脚本整改
    • 六、计划任务注意事项
      • 七、结论

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

        一、示例环境

        项目 示例信息
        数据库服务器 IP 10.10.10.113
        异地备份服务器 IP 10.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 认证连接没有统一的固定失效时间,但以下情况可能导致原连接不可用:

        • 数据库服务器或异地备份服务器重启;
        • Windows 用户注销或切换;
        • 异地服务器账户密码发生变化;
        • Windows 保存了旧密码;
        • 网络中断导致原 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 账户;
        • 该账户与执行 net use 的账户一致;
        • 不使用没有共享认证的 SYSTEM 账户;
        • 勾选“使用最高权限运行”;
        • 脚本记录复制返回码;
        • 传输完成后校验异地文件是否存在及大小是否一致。

        七、结论

        本次问题不是备份文件、网络或异地共享目录异常,而是数据库服务器当前 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异地备份失败内容请搜索爱读视界以前的文章或继续浏览下面的相关文章希望大家以后多多支持爱读视界!

        您可能感兴趣的文章:

        • MySQL5.7.44-winx64版本Windows Server下载安装过程
        • SQL Server的Windows身份验证和sa登录都被禁用的完美解决方法
        • SQL Server使用Windows身份验证与JDBC连接数据库的操作流程
        • Windows开启SQL Server服务及1433端口详细教程
        • 配置Windows防火墙允许SQL Server远程连接的实现
        读到这里,发现更多一点。探索更多内容 ↗