使用SQL Server作业代理运行.exe时出现访问被拒绝的错误。

4
我创建了一个C#控制台应用程序,并尝试在SQL Server作业上运行它。
我将类型设置为“操作系统”,命令文本为:
"C:\Users\Admin\Documents\Visual Studio 2010\Projects\JobsApp\JobsApp\obj\x86\Release\JobsApp.exe"

当我运行这个任务的时候,会出现以下错误信息:
执行用户为 NT Service\SQLSERVERAGENT。 未处理的异常: System.IO.FileLoadException: 无法加载文件或程序集“FeedLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或其某一个依赖项。 拒绝访问。
因此,我给 SQLSERVERAGENT 授予了访问该 dll 文件的权限,但现在我得到了以下错误信息:
执行用户为 NT Service\SQLSERVERAGENT。第 1 步的进程无法创建作业 0x3E702A92E3799D4995984DF6641604F2(原因:访问被拒绝)。 步骤失败。
我非常困惑。是否还有其他文件需要授权访问?我做错了什么?
我使用 SQL Server 2012,并使用 Visual C# Express 2010 创建了 exe 文件。
谢谢。

@KenWhite 谢谢您!请将其添加为答案,我会标记它。 - Rivka
1个回答

3

你的应用程序位于 C:\Users\Admin 文件夹中(为什么???),因此需要有人以 Admin 身份登录或特别授予访问该文件夹的权限才能运行它。看起来(值得庆幸的是),SQLSERVERAGENT 没有以管理员权限运行。


关于您最后的陈述,这是不好的吗?http://serverfault.com/questions/460825/package-run-on-sql-server-job-agent-login-failed-for-user#460852 将其更改为管理员是使其正常工作的唯一方法... - Rivka
允许除了管理员用户以外的任何人访问任何东西都是不好的。这样做会破坏通过拥有管理员帐户来限制访问权限的整个目的。你的应用程序不应该在具有管理员权限的文件夹中运行(你也不应该允许其他任何东西以管理员特权运行)。应用程序应该在某个受限制的位置运行——它绝对必须具备的最低权限。否则就像在房子里已经有盗贼的情况下锁上前门一样。:-) 在这里关于安全性和UAC有很多帖子;你可能想要进行一些研究。:-) - Ken White

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接