我想在远程计算机上运行exe。我的设置如下:
故障排除:
任何人都知道为什么我可以手动运行所有内容但是当我执行一个sql server代理作业只是在远程comp上运行一个exe它不会工作?
答案 0 :(得分:1)
这是预期的行为。在模拟上下文下对远程进行身份验证时,Kerberos约束委派规则会启动(也称为“双跃点”)。使用Windows身份验证连接到SQL Server时,您正在运行模拟上下文。使用SQL身份验证进行连接时,远程访问使用为该SQL登录配置的代理登录。
所有'成功'案例都落在没有双跳的一侧,或者有一个可以使用的代理用户。所有失败的案例都是“双跳”,具有Windows身份验证登录(因此使用模拟,而不是代理用户)。
如上所述,问题解决起来非常简单:将“\ host \ c $ \ path \ program.exe”本地复制到SQL实例主机并在本地运行(“c:\ path \ program.exe “)。除了避免双跳之外,还有更多的原因。但很可能程序本身需要远程访问,并且将触发约束委派。
因此,对于您要访问的特定服务,set up constrained delegation 是正确的解决方法。这是一个真正的痛苦,但它是前进的唯一途径。与您的网络和域管理员讨论如何操作,他们必须参与(它只需要某些特权)并且他们知道如何操作。在Windows 2012中设置起来要容易得多,请参阅How Windows Server 2012 Eases the Pain of Kerberos Constrained Delegation, Part 1。
答案 1 :(得分:1)
我实际上找到了一个令人满意的黑客攻击,这个攻击并不是无效的...... 我创建了一个由SQL代理触发的bat。 Bat文件触发了所需的exe。
为什么这看不到相同的访问问题我不知道,但我很高兴它没有:)
bat文件内容
start \\xxxxxx\xxxxxx\xxxx.exe