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

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

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

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

我错过了什么?

IIRC,驱动器映射只能使用交互式login – 我相信您的备份作为服务运行。 SQL备份任务是否允许您使用UNCpath添加目标驱动器的凭据,而不是映射驱动器?

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

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

服务无法使用映射的驱动器,据我所知,没有办法使用UNCpath传递凭证。 如果非域服务器无法添加到域,我唯一的build议是将该共享的写权限授予“每个人”。

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