MS SQL Server 2012 ......每晚将数据库备份到与 SQL Server 机器相同/本地的数据库......
我正在尝试添加另一个 SQL Server 代理作业以将 .bak文件复制到具有非 Windows(非 AD)用户/密码凭据的远程(非 Windows,即 Linux)共享。我无权配置或更改由其他非常远程的人控制的访问权限。
为此(复制)我创建了具有相同用户名和密码的本地用户,如果手动输入命令 ,则授予它对(源或本地)备份文件夹的权限,所有这些都可以从命令行(Win + К
或)完美地工作:cmd
RUNAS /user:UserName /savecred "robocopy d:\SQLBACKUP \\10.195.xx.yyy\backup /S /purge /MAXAGE:7 /MT:1 /Z"
但无法作为SQL Server 代理作业运行(步骤类型为“ Operating System(CmdExec)
”。SQL 服务代理(在[NT Service/SQLServiceAgent]
帐户下运行的标准配置,该作业由SA
SQL Server 超级用户拥有)。
谁能解释我为什么它失败以及如何正确运行它(考虑到我无权访问域用户配置)?
要回答为什么失败的具体问题是您服务器上的服务帐户没有访问共享的正确权限。
我有一个环境,其中有 2 台服务器不在域中。使用
SQL Server Agent
代理是我解决这个问题的方法。我有一个用于两台机器的特殊帐户(您的帐户具有相同的名称和密码),我必须将其添加到实例级凭据(在 SSMS 对象资源管理器中的安全性下)(请参阅 MSDN 文章“创建凭据”)和在操作系统 (CmdExec) 下添加代理代理。
创建这些帐户后,您可以选择要运行的帐户(您为代理提供的名称),它将起作用。然而,这是在 2008 年,我还没有和 2012 年的经纪人玩过那么多。
不过应该仍然可以正常工作。
然后,您将使用您的 robocopy 行“robocopy d:\SQLBACKUP \10.195.xx.yyy\backup /S /purge /MAXAGE:7 /MT:1 /Z”作为您的命令(我使用 xcopy,但它的工作原理相同)。
将文件复制到联网计算机的另一种方法是使用源计算机域凭据 - https://dba.stackexchange.com/a/128282/51798