SQL代理作业:使用具有不同凭据的映射驱动器

SQL代理作业:使用具有不同凭据的映射驱动器

我正在运行 SQL Server 2008,并想设置一个代理作业来备份所有数据库。运行 SQL Server 的计算机是 Windows 域的一部分。备份文件的目标位于另一台不在域中的计算机上,因此我需要不同的凭据才能访问它。

我创建了一个新的域帐户 (SqlBackup),将其添加为新的 SQL 帐户(授予其“备份数据库”),并使用它来运行代理作业。我以该用户身份在本地登录,将目标网络共享映射到驱动器(为其提供必要的凭据)。

我用来备份所有数据库的脚本只是调用“备份数据库”(在所有数据库的游标循环中)并将备份文件写入映射驱动器。问题是:当 SQL 代理以 SqlBackup 用户身份运行作业时,驱动器未映射。

我错过了什么?

答案1

我记得,驱动器映射只能在交互式登录下工作 - 我相信您的备份以服务形式运行。SQL 备份任务是否允许您使用 UNC 路径而不是映射驱动器来添加目标驱动器的凭据?

答案2

如果您的工作是执行命令行命令,请将其放入.bat要执行的文件中。

然后,在.bat文件中,在执行实际工作的命令之前,使用命令net use( NET USE drive: share_name /USER:domain/user_id password) 从 SQL 作业中映射驱动器。您可以提供所需的任何用户 ID 和密码。只需记住在退出 bat 文件 ( NET USE drive: /delete) 之前取消映射驱动器,否则下次运行时它将生成一个错误级别,SQL 会将其解释为问题。当您.bat从作业步骤执行文件时,“调用”.bat文件 ( ) 否则 SQL 可能会在步骤完成CALL MY_BAT.BAT之前跳转到下一步。.bat

答案3

服务不能使用映射驱动器,而且据我所知,没有办法使用 UNC 路径传递凭据。如果无法将非域服务器添加到域中,我唯一的建议是向“所有人”授予对该共享的写入权限。

另一种方法可能是将备份转储到本地服务器驱动器,然后在非域服务器上创建“收集器”批处理作业,将备份文件拉到最终目的地。

相关内容