天天看点

SQL Server 如何备份至远程服务器

作者:IT干杂铺

一、问题

最近有一个SQLSERVER的数据库迁移项目,采用的方法是全量备份+差异备份,然后在目标机器上进行还原,由于源库的数据量非常大,大概10T左右,所以打算直接备份至target机器,然后再进行还原。但是SQLSERVER默认不识别网络映射驱动器。该怎么办?本文分享一下具体的实施过程和方法。

二、解决方案

当我们使用 SQL Server Management Studio 浏览网络驱动器时,只能看到本地驱动器。在本文 中,我们将展示如何查看其他驱动器以便使用 SSMS 进行备份恢复。当您尝试从 SQL Server Management Studio 浏览存放备份的驱动器时,您会发现只有本地驱动器,具体如下:

SQL Server 如何备份至远程服务器

2.1 映射网络驱动器

为了使网络共享对 SQL Server 可见,首先将其映射为网络驱动器。您需要使用 Windows 操作系统中的“映射网络驱动器”来映射网络共享:

SQL Server 如何备份至远程服务器

在操作系统中映射驱动器之后,并不能在SQL Server 中识别该驱动器,要在 SQL Server 中识别该网络驱动器,您需要使用 xp_cmdshell 命令。在此之前,您需要确保在您的 SQL 实例中启用了 xp_cmdshell 命令,因为默认情况下它是禁用的。可以使用 sp_configure 命令启用它,如下所示:

EXEC sp_configure 'show advanced options', 1;

GO

RECONFIGURE;

GO

EXEC sp_configure 'xp_cmdshell',1

GO

RECONFIGURE

GO

现在使用 xp_cmdshell 命令为 SQL 定义共享驱动器,如下所示:

EXEC XP_CMDSHELL 'net use H: \\RemoteServerName\ShareName'

映射完成后,为了验证新驱动器,您可以使用以下命令显示该新映射驱动器中的所有文件:

EXEC XP_CMDSHELL 'Dir H:'

让我们再次尝试使用 SQL Server Management Studio 浏览路径。正如我们在下面看到的,我们现在可以看到 H: 驱动器:

SQL Server 如何备份至远程服务器

现在共享驱动器是可见的,可以将任何数据库备份到该网络路径,因为它现在对 SSMS 中的 SQL Server 可见。

2.2 删除映射的驱动器

当你不需要映射的驱动器之后,您也可以使用以下命令删除该路径:

EXEC XP_CMDSHELL 'net use H: /delete'

2.3不映射网络驱动器

如果不想映射网络驱动,当然也可以直接访问远程共享

SQL Server 如何备份至远程服务器

通过xp_cmdshell授权网络共享目录之后,还可以通过ssms备份,输入共享目录的UNC路径及文件名即可

SQL Server 如何备份至远程服务器
SQL Server 如何备份至远程服务器

三、禁用XP_CMDSHELL

由于xp_cmdshell是通过SQL Server来执行系统命令,因此它具有SQL Server服务的相应权限,而SQL Server默认是system权限,实际上Windows系统最高级别的权限是System用户权限,因此建议为SQL Server服务提供专用账号,并授于其最小权限,为了安全起见,建议使用完之后立即禁用xp_cmdshell

EXEC sp_configure 'xp_cmdshell',0

GO

RECONFIGURE

GO

EXEC sp_configure 'show advanced options', 0;

GO

RECONFIGURE;

当然,普通用户不具有xp_cmdshell执行权限,使用xp_cmdshell只有具有sysadmin角色或配置了xp_cmdshell_proxy_account账号,才有权限执行xp_cmdshell

四、小结

本文讨论了如何在SQLSERVER中如何映射网络驱动器的方法。本文转发自:https://www.cnblogs.com/lkj371/p/16710328.html

继续阅读