sql-server – SQL批量插入的Kerberos委派(拒绝访问)

在以下情况下尝试批量插入SQL时遇到问题:

>在Workstation A上运行管理工作室
>在服务器B上运行的SQL
>从位于服务器C上的批量上载文件

当我尝试批量上传时,我收到错误

Cannot bulk load because the file <filename> could not be opened. Operating system error code 5(Access is denied.).

现在我知道我们在这里有一个双跃点问题,需要整理委托.已经为SQL设置了SPN,如下所示(SQL在不同的端口上运行). SQL作为域用户运行,SPN在该帐户上.

command: setspn -l domain\sqluser

result:
MSSQLSvc/WIN-D04V1IOTESN
MSSQLSvc/WIN-D04V1IOTESN.domain.local
MSSQLSvc/win-d04v1iotesn.domain.local:55037
MSSQLSvc/WIN-D04V1IOTESN:55037

我还设置了从SQL用户帐户到Cifs和HOST的文件服务器的委托,但无济于事.

我已启用Kerberos日志记录,并在事件查看器中看到以下事件:

 A Kerberos Error Message was received:
     on logon session 
     Client Time: 
     Server Time: 14:44:10.0000 8/9/2011 Z
     Error Code: 0xe KDC_ERR_ETYPE_NOTSUPP
     Extended Error: 
     Client Realm: 
     Client Name: 
     Server Realm: domain.LOCAL
     Server Name: krbtgt/domain.LOCAL
     Target Name: krbtgt/domain.LOCAL@domain.LOCAL
     Error Text: 
     File: 9
     Line: efb
     Error Data is in record data.

那么,对于我在这里缺少什么的想法?我之前有过这种委托,但是在默认端口上一直使用SQL,这会产生什么影响?

编辑

我现在也看到这个Kerbors错误与第一个错误:

A Kerberos Error Message was received:
 on logon session 
 Client Time: 
 Server Time: 15:4:10.0000 8/9/2011 Z
 Error Code: 0xe KDC_ERR_ETYPE_NOTSUPP
 Extended Error: 
 Client Realm: 
 Client Name: 
 Server Realm: domain.LOCAL
 Server Name: krbtgt/domain.LOCAL
 Target Name: krbtgt/domain.LOCAL@domain.LOCAL
 Error Text: 
 File: 9
 Line: efb
 Error Data is in record data.
最佳答案
从注释中,您使用域登录连接到SQL,因此SQL在连接到文件共享时会尝试模拟您.如果您没有为您的域帐户设置此委托,则会失败.

当运行作为SQL登录连接的存储过程时,SQL将尝试使用它正在运行的域服务帐户,您说已经为此设置了委派.

如果使用域服务帐户连接查询窗口,则SQL正在运行,因为它已经配置,因此它应该可以正常运行.为您自己的域帐户设置一个委托信任到文件服务器,它应该开始工作.

转载注明原文:sql-server – SQL批量插入的Kerberos委派(拒绝访问) - 代码日志