如何备份数据库到本地映射网络驱动器

来源:互联网 发布:python字符转换成数字 编辑:程序博客网 时间:2024/05/29 14:31

我们使用映射驱动器备份SQL Server数据库的时候可能会遇到下面的错误:

 

”失败,错误如下:“无法打开备份设备 'z:\GBDB_backup_201306302002.bak'出现操作系统错误 3(系统找不到指定的路径。)

 

数据库无法找到路径,但是如果我们直接打开的话是可以正常访问的,那么为什么SQL Server无法访问呢?

 

因为SQL Server是作为Service运行的,所以无法感知到共享路径映射的网络驱动盘。因为SQL Server服务使用SQL Server启动账户安全上下文运行在本地控制台上下文环境。而映射磁盘驱动器只是对于特定的Session可见,对于在本地控制台上下文环境中启动的服务是不可见的。

 

如果一定要备份到映射磁盘可以使用下面的方法:

 

1. 打开SQL Server运行下面的命令   EXEC xp_cmdshell 'net use <drivename> <share name>'

--<drive name>:映射驱动器盘符 --<share name>: UNC 共享路径

 

2. 应该可以备份到上面创建的驱动器盘符了。

Net use 文档参考:http://technet.microsoft.com/en-us/library/bb490717.aspx

 

这样做的缺点是当SQL Server服务重启的时候,映射的磁盘将会丢失。如果要持续映射磁盘,需要创建一个启动的存储过程。另外还有安全性的考量(xp_cmdshell

简单的办法是直接用UNC备份。这样只需要确保SQL Server启动账户有对于远程共享文件夹有完全控制权限。

 

理想情况下,服务不应该访问本地映射驱动器,因为本地映射驱动器在不同的Windows版本会有不同的特性,上面提到的方法不一定在所有的情景下可用。

 

参考:180362  INFO: Services and Redirected Drives

 

原文来自: How to backup SQL Server databases to a mapped drive

 

原创粉丝点击