【发布时间】:2017-01-03 09:42:38
【问题描述】:
我有一个作为域用户运行的 Windows 服务 (.NET),它对所需的数据库资源和文件系统具有完全权限。该服务调用一个过程,该过程调用 SQL Server 中的批量插入语句。
该服务以集成的安全性运行,该帐户已被授予登录为服务的权限。但是,当服务在 SQL Server 所在位置以外的其他服务器上运行时,我会遇到权限问题。
app Server 叫 Srv01,db server 叫 Sql01。该过程使用 Sql01 中的过程生成 pdf 并调用批量插入。当我在 Srv01 中安装 windows 服务时,出现以下错误:
Cannot bulk load because the file "//Srv01/Output/Letter.pdf" could not be opened. Operating system error code 5(Access is denied.).
网络共享对所有人都具有完全权限。我只是想让它工作并稍后加强安全性。
当我在与数据库相同的服务器(即Sql01)中使用相同的域用户运行相同的服务时,该过程正常工作。
我们正在运行:Windows Server 2012、SQL Server 2012 Enterprise,并且该服务是用 .NET 4.5 编写的。我曾尝试查看 sql server 和 app server 上的本地安全策略,但没有任何结果。是的,我也重新启动了应用服务器(虽然不是数据库)。
【问题讨论】:
-
看起来像一个双跳问题:从 srv01 到 sql01 的身份验证有效,但是当 sql01 尝试模拟帐户访问 srv01 上的共享时失败。这里有很多可能出错的地方。 this site 详细描述了一种场景。
-
感谢@JeroenMostert。那篇文章很有用,但它指向的论坛无法访问。我终于想通了!它与服务主体名称和 Kerberos 身份验证有关。我会写一个更大的条目作为答案。
标签: sql-server windows-services windows-server-2012