提问人:Ryan 提问时间:8/20/2008 最后编辑:MattRyan 更新时间:2/1/2019 访问量:91285
通过网络还原数据库备份
Restore database backup over the network
答:
数据库通常在无网络访问权限的帐户下作为服务运行。如果是这种情况,您将无法直接通过网络进行还原。需要将备份复制到本地计算机,或者数据库服务需要以具有适当网络访问权限的用户身份运行。
评论
EXEC xp_cmdshell 'NET USE...
我不得不这样做几次,我知道只有两种选择。将文件本地复制到 SQL Server,或在 SQL Server 上创建映射到包含备份文件的共享的网络驱动器。
无法通过 SSMS GUI 执行此操作,但可以使用脚本执行此操作。从 DISK='\unc\path\filename' 还原数据库 如果需要自动执行此过程,最好的方法是设置 SQL Server 作业,并以有权访问文件位置的用户身份运行该作业。
评论
此外,还需要确保 SQL Server 服务以具有网络访问权限的用户身份运行,并且对备份文件所在的共享具有权限。“本地系统”将无权访问网络。
确保运行您的用户是 Active Directory,这将解决此问题。SQL services
"Services.msc"
"Domain User"
顺便说一句,如果碰巧在虚拟机上运行 SQL,则只需在 VM 上临时设置一个具有足够空间的新驱动器来复制备份文件,从该新的本地副本执行还原,然后删除临时驱动器,通常不会那么麻烦。
如果停止/启动 SQL 服务以更改其帐户是一个问题,这可能很有用。
您可以使用 SP xp_cmdshell映射 sql server 的 networkdrive,之后它将显示在文件浏览窗口中。
EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME'
更多信息在这里: 从网络驱动器还原数据库
为我工作!
使用网络文件作为备份源的选项很少
- 将网络驱动器/路径、托管文件映射到 MS-SQL Server 的 SAME 用户下。
- 使用扩展存储过程从 MS SQL 内部映射网络驱动器xp_cmdshell这样,命令 shell 将具有与运行 SSMS 的用户帐户相同的特权)
-- allow changes to advanced options
EXEC sp_configure 'show advanced options', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName'
之后,驱动器 Z: 将在 Server Managment Studio 中可见,或者只是
RESTORE DATABASE DataBaseNameHere FROM DISK = 'Z:\BackNameHere.BAK'
GO
评论
NET USE
EXEC sp_configure 'xp_cmdshell', 0
在具有备份的计算机上创建一个共享驱动器,例如 server1 在文件夹“Backups”中具有备份。向运行 SQL Server 的帐户授予完全控制权限。在要还原的服务器上,要启动 SSMS,请转到还原数据库,然后选择“从设备”。在“查找备份文件-”服务器“对话框中,删除”所选路径“字段中的任何内容,并在”文件名“字段中提供完整路径,以便”\server\backups\db.bak”。至少在从 05 迁移到 08 时它对我有用。不是首选方法,因为任何网络打嗝都可能导致还原问题。
EXEC sp_configure 'show advanced options', 1
GO
-- 更新高级选项的当前配置值。
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- 更新高级选项的当前配置值。
RECONFIGURE
GO
--这应该在命令提示符 (cmd) 上运行
NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no
然后在 SQL Server 上
EXEC xp_cmdshell 'NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no'
--之后驱动器 Z:将在 Server Management Studio 中可见,或者只是
RESTORE DATABASE DB FROM DISK = 'Z:\DB.BAK'
WITH REPLACE
评论