我们将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(系统找不到指定的路径。)。
这可能吗?
答案 0 :(得分:2)
不,不是。映射的驱动器存在于会话中。服务器进程(sql server)拥有它自己的会话,因此它看不到你的映射驱动器。
答案 1 :(得分:1)
要在SQL Server在域用户帐户中运行时备份到网络驱动器,必须将共享驱动器映射为运行SQL Server的会话中的网络驱动器。如果从命令行启动Sqlservr.exe,SQL Server将看到您在登录会话中映射的所有网络驱动器。
请查看以下文章以供参考:
http://msdn.microsoft.com/en-us/library/ms179313.aspx#NetworkShare