映射驱动器并备份SQL Server数据库

时间:2014-05-28 16:04:29

标签: sql-server powershell powershell-v3.0

我们将SQL Server数据库备份到NAS,并且好奇是否可以备份到临时映射驱动器,而不是UNC路径。我撞墙了。

使用New-PSDrive:

New-PSDrive -Name "Y" -PSProvider FileSystem -Root "\\NAS\Backups" -Scope Global -Persist

Test-Path "Y:\SQLDBA" <# returns True #>

<# Method 1 #>
sqlcmd -E -d master -Q "BACKUP DATABASE [SQLDBA] TO DISK = N'Y:\SQLDBA\SQLDBA.bak' WITH INIT" -b
<# Method 2 #>
Invoke-Sqlcmd -Database master -Query "BACKUP DATABASE [SQLDBA] TO DISK = N'Y:\SQLDBA\SQLDBA.bak' WITH INIT" -QueryTimeout 999999999 -verbose -ErrorAction Stop  

Remove-PSDrive "Y"

使用网络使用:

net use Y: \\NAS\Backups /persistent:yes

<# Method 1 #>
sqlcmd -E -d master -Q "BACKUP DATABASE [SQLDBA] TO DISK = N'Y:\SQLDBA\SQLDBA.bak' WITH INIT" -b
<# Method 2 #>
Invoke-Sqlcmd -Database master -Query "BACKUP DATABASE [SQLDBA] TO DISK = N'Y:\SQLDBA\SQLDBA.bak' WITH INIT" -QueryTimeout 999999999 -verbose -ErrorAction Stop  

net use Y: /delete

任何一种方法都会给我带来同样的错误:

无法打开备份设备&#39; Y:\ SQLDBA \ SQLDBA.bak&#39;。操作系统错误3(系统找不到指定的路径。)。

这可能吗?

2 个答案:

答案 0 :(得分:2)

不,不是。映射的驱动器存在于会话中。服务器进程(sql server)拥有它自己的会话,因此它看不到你的映射驱动器。

答案 1 :(得分:1)

要在SQL Server在域用户帐户中运行时备份到网络驱动器,必须将共享驱动器映射为运行SQL Server的会话中的网络驱动器。如果从命令行启动Sqlservr.exe,SQL Server将看到您在登录会话中映射的所有网络驱动器。

请查看以下文章以供参考:

http://msdn.microsoft.com/en-us/library/ms179313.aspx#NetworkShare