我有一个SQL Server(2000、2005和2008),我想使用SQL Agent(甚至将简单的备份数据库'xxx'到disk ='yyy')备份到远程驱动器。
即:我在SQL机器中有一个映射的驱动器,例如:“ M:”,它映射到\\ otherbox \ someshare
默认情况下,SQL Server不允许您备份到此类驱动器,但是我认为有一种方法可以启用它。有人可以指出我的文档吗?
提前致谢。
我有一个SQL Server(2000、2005和2008),我想使用SQL Agent(甚至将简单的备份数据库'xxx'到disk ='yyy')备份到远程驱动器。
即:我在SQL机器中有一个映射的驱动器,例如:“ M:”,它映射到\\ otherbox \ someshare
默认情况下,SQL Server不允许您备份到此类驱动器,但是我认为有一种方法可以启用它。有人可以指出我的文档吗?
提前致谢。
Answers:
指定目标位置时,请使用UNC路径-SQL Agent没有“映射”“驱动器”的概念。
另外,SQL Agent通常以“本地服务”或“本地系统”运行,因此,没有其他计算机上远程共享的权限。
您有两种选择:
将SQL Agent作为域中的角色帐户运行。授予该帐户许可权,将其写入要存储备份的目录/共享。
以“网络服务”身份运行SQL Agent。它将使用运行该服务的计算机的域计算机帐户向共享服务器进行身份验证。授予该帐户写入您要存储备份的目录/共享的权限。
如果您没有域,请在托管SQL Agent的计算机和托管备份文件的计算机上使用相同的用户名和密码创建一个帐户。将SQL Agent更改为以该“角色”帐户运行,并授予该帐户写入您要存储备份的目录/共享的权限。(“穷人的领域” ...)
我完全同意关于UNC路径的两个答案。
我还要补充一点,即使使用映射的驱动器,您也可以采用简单的解决方法。您可以对服务器的任何普通驱动器执行备份。然后您可以添加
xp_cmdshell 'XCOPY [source] [destination] \flags'
对作业或运行的SQL脚本的SQL命令。
使用xp_cmdshell,您可以做更多的事情-例如,运行外部存档命令行工具(例如7z),在将文件复制到映射的驱动器之前将其压缩(当远程连接太慢时...)。
PS:忘记提及可以通过使用“外围应用配置器”工具和执行sp_configure来启用和禁用xp_cmdshell(默认情况下,它被禁用)
如果SQL Server不在域帐户下运行,则可以按照此stackoverflow答案中的描述为sqlserver帐户(而不是您的帐户)映射网络驱动器
首先,您需要启用xp_cmdshell
-- 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'
最后,您可以备份到该映射的驱动器:
BACKUP DATABASE myDB TO DISK = 'z:\file.bak'