如何通过网络使用 SQL Server 2005 恢复数据库备份?我记得以前这样做过,但是你必须这样做的方式有些奇怪。
10 回答
您几乎没有选择将网络文件用作备份源
- 在与 MS-SQL Server 相同的用户下映射网络驱动器/路径、托管文件。
- 使用 xp_cmdshell 扩展存储过程从 MS SQL 内部映射网络驱动器(这样,命令 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:将在服务器管理工作室中可见,或者只是
RESTORE DATABASE DataBaseNameHere FROM DISK = 'Z:\BackNameHere.BAK'
GO
数据库通常在没有网络访问权限的帐户下作为服务运行。如果是这种情况,那么您将无法直接通过网络进行恢复。要么需要将备份复制到本地计算机,要么需要以具有适当网络访问权限的用户身份运行数据库服务。
您无法通过 SSMS GUI 执行此操作,但您可以使用脚本执行此操作。RESTORE DATABASE from DISK='\unc\path\filename' 如果您需要自动执行此过程,最好的方法是设置 SQL Server 作业并以有权访问文件位置的用户身份运行它。
确保运行您的用户SQL services
是"Services.msc"
活动目录"Domain User"
,这将解决问题。
您可以使用 SP xp_cmdshell 为 sql server 映射网络驱动器,然后它将显示在文件浏览窗口中。
EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME'
更多信息:从网络驱动器恢复数据库
为我工作!
我不得不这样做几次,而且我只知道两个选项。将文件本地复制到 SQL Server,或在 SQL Server 上创建映射网络驱动器到包含备份文件的共享。
此外,您需要确保 SQL Server 服务以具有网络访问权限的用户身份运行 - 以及对备份文件所在共享的权限。“本地系统”将无权访问网络。
附带说明一下,如果您碰巧在虚拟机上运行 SQL,只需在虚拟机上临时设置一个具有足够空间来复制备份文件的新驱动器,从该新的本地副本进行恢复,通常就不会那么麻烦,然后删除临时驱动器。
如果停止/启动 SQL 服务以更改其帐户是一个问题,这将很有用。
在具有备份的计算机上创建一个共享驱动器,例如 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:将在服务器管理工作室中可见,或者只是
RESTORE DATABASE DB FROM DISK = 'Z:\DB.BAK'
WITH REPLACE