我有一个作为域用户运行的Windows服务(.NET),它具有对所需数据库资源和文件系统的完全权限。该服务调用一个在SQL Server中调用批量插入语句的过程。使用SQL Server和集成安全性的权限错误
该服务使用集成安全性运行,该帐户已被授予登录作为服务权限。但是,如果服务在除SQL Server所在位置以外的其他服务器上运行,则会面临权限问题。
应用程序服务器被称为Srv01,而数据库服务器是Sql01。该过程生成pdf并使用Sql01中的过程调用批量插入。当我在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](https://www.roelvanlisdonk.nl/2009/05/22/microsoft-sql-2005-bulk-insert-kerberos-double-hop-and-operating-system-error-code-5-access -is-denied /)详细描述了一种情况。 –
谢谢@JeroenMostert。那篇文章很有用,但它指向的论坛无法访问。我终于明白了!它与服务主体名称和Kerberos身份验证相关。我会写一个更大的条目作为答案。 – Candide