通过网络还原数据库备份

Restore database backup over the network

提问人:Ryan 提问时间:8/20/2008 最后编辑:MattRyan 更新时间:2/1/2019 访问量:91285

问:

如何使用 SQL Server 2005 通过网络还原数据库备份?我记得以前这样做过,但你必须这样做的方式有些奇怪。

sql-server 数据库 sql-server-2005 备份 还原

评论


答:

23赞 Curt Hagenlocher 8/20/2008 #1

数据库通常在无网络访问权限的帐户下作为服务运行。如果是这种情况,您将无法直接通过网络进行还原。需要将备份复制到本地计算机,或者数据库服务需要以具有适当网络访问权限的用户身份运行。

评论

2赞 JB. 6/17/2014
或在入网前执行;查看其他答案..EXEC xp_cmdshell 'NET USE...
1赞 Jasim Khan Afridi 5/22/2017
mssqltips.com/sqlservertip/3499/......
0赞 Brian G Swanson 8/20/2008 #2

我不得不这样做几次,我知道只有两种选择。将文件本地复制到 SQL Server,或在 SQL Server 上创建映射到包含备份文件的共享的网络驱动器。

10赞 baldy 9/2/2008 #3

无法通过 SSMS GUI 执行此操作,但可以使用脚本执行此操作。从 DISK='\unc\path\filename' 还原数据库 如果需要自动执行此过程,最好的方法是设置 SQL Server 作业,并以有权访问文件位置的用户身份运行该作业。

评论

2赞 Jim Aho 3/15/2017
事实并非如此。只要在打开“还原数据库...”之前映射了网络驱动器,就可以通过网络还原它。对话。
1赞 baldy 3/20/2017
SQL 2005 或 SQL 2008 工具并非如此
0赞 Daniel O 9/9/2008 #4

此外,还需要确保 SQL Server 服务以具有网络访问权限的用户身份运行,并且对备份文件所在的共享具有权限。“本地系统”将无权访问网络。

7赞 RSOLY777 4/20/2012 #5

确保运行您的用户是 Active Directory,这将解决此问题。SQL services"Services.msc""Domain User"

0赞 Brian Miller 1/18/2013 #6

顺便说一句,如果碰巧在虚拟机上运行 SQL,则只需在 VM 上临时设置一个具有足够空间的新驱动器来复制备份文件,从该新的本地副本执行还原,然后删除临时驱动器,通常不会那么麻烦。

如果停止/启动 SQL 服务以更改其帐户是一个问题,这可能很有用。

8赞 coussej 2/15/2013 #7

您可以使用 SP xp_cmdshell映射 sql server 的 networkdrive,之后它将显示在文件浏览窗口中。

EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME'

更多信息在这里: 从网络驱动器还原数据库

为我工作!

91赞 TPAKTOPA 12/9/2013 #8

使用网络文件作为备份源的选项很少

  1. 将网络驱动器/路径、托管文件映射到 MS-SQL Server 的 SAME 用户下。
  2. 使用扩展存储过程从 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

评论

2赞 JB. 6/17/2014
使用 SQL Server 当前服务用户进行调用可解决此问题。这个答案真的很有用。NET USE
1赞 David Betz 8/10/2015
这是完美的。它是我们问题的解决方案:完全的MSSQL访问,但没有文件服务器访问。需要一份副本。怎么样?这就是解决方案。
1赞 Jim Aho 3/14/2017
您是否需要像之后那样运行某些命令来禁用xp_cmdshell?(出于安全原因或其他原因)。EXEC sp_configure 'xp_cmdshell', 0
0赞 Jim Aho 3/15/2017
在 management studio 中生成 Windows 命令 shell 非常酷。我认为值得一提的是,命令 shell 将具有与运行 SSMS 的用户帐户相同的权限
1赞 TPAKTOPA 3/17/2017
@JimAho我认为,从MS SQL Server启动的命令shell是一个很大的安全问题。但是他们实现了它,以弥补功能缺失或其他架构问题。其他 SQL Server 不需要具有管理员访问权限或生成命令 shell,即可执行常规任务,例如还原备份...
0赞 Kelly 4/25/2015 #9

在具有备份的计算机上创建一个共享驱动器,例如 server1 在文件夹“Backups”中具有备份。向运行 SQL Server 的帐户授予完全控制权限。在要还原的服务器上,要启动 SSMS,请转到还原数据库,然后选择“从设备”。在“查找备份文件-”服务器“对话框中,删除”所选路径“字段中的任何内容,并在”文件名“字段中提供完整路径,以便”\server\backups\db.bak”。至少在从 05 迁移到 08 时它对我有用。不是首选方法,因为任何网络打嗝都可能导致还原问题。

0赞 Muhammad Adil Jamil 2/1/2019 #10
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

评论

0赞 Gazihan Alankus 2/1/2019
你能格式化你的代码,让它更清晰吗?meta.stackexchange.com/questions/22186/......