SQL Server远程备份报错:Operating system error 1326
问题描述:
通过SSMS以有远程UNC路径写入权限的账号执行以下命令:
BACKUP DATABASE master TO DISK = '\\192.168.11.108\szsql01_backup\SystemDB\master.bak';
遇到如下不报错:
消息 3201,级别 16,状态 1,第 1 行
无法打开备份设备 '\\192.168.11.108\szsql01_backup\SystemDB\master.bak'。出现操作系统错误 1326(登录失败: 未知的用户名或错误密码。)。
消息 3013,级别 16,状态 1,第 1 行
BACKUP DATABASE 正在异常终止。
SQL Server错误日志描述如下:
BackupDiskFile::CreateMedia: Backup device '\\192.168.11.108\szsql01_backup\SystemDB\master.bak' failed to create. Operating system error 1326
验证错误:
我通过xp_cmdshell查询远程共享目录:
xp_cmdshell 'dir \\192.168.11.108\szsql01_backup\SystemDB '
将会返回以下错误:
Logon failure: unknown user name or bad password.
解决方法:
这是个账号验证问题。我们需要确保映射一个磁盘到SQL Server。正如联机帮助所述:
“For a network share to be visible to SQL Server, the share must be mapped as a network drive in the session in which SQL Server is running”
使用如下命令映射共享目录到Z:
EXEC xp_cmdshell 'net use Z: \\192.168.11.108\szsql01_backup\SystemDB xxxxxxxx /User:domain\user'
执行成功后,我们查询Z:来验证:
EXEC xp_cmdshell 'dir Z:\ '
之后,Z:在SQL Server中可以作为映射的磁盘来备份数据。
BACKUP DATABASE master TO DISK = 'Z:\master.bak';
深入阅读:
创建备份设备或者创建启动存储过程来映射磁盘
https://blogs.msdn.microsoft.com/varund/2009/06/04/backup-and-restore-sql-server-database-to-a-network-shared-drive/
其他用途:
当镜像服务器磁盘空间不足时,我们可以通过将远程共享路径映射到本地磁盘。将镜像数据库放到该映射磁盘上来做异步镜像。