我正在运行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“收集器”批处理作业,以将备份文件拖放到最终目的地。