关于数据库:用户” NT AUTHORITY \\ ANONYMOUS LOGON”的登录失败-MS SQL Server-可能无法解决问题

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON' - MS SQL Server - possibility of being unable to solve the issue

为什么不询问dba.stackexchange:描述说它是给专业人士的,我不是,所以它有"给发烧友"的部分。

我有一个错误
"用户\\'NT AUTHORITY \\\\\\ ANONYMOUS LOGON登录失败\\'"

这是一个常见错误,有多种可能的原因和解决方案。问题是我不了解数据库和服务器管理以及凭据身份验证主题,因此我将需要花费大量时间来了解正在说和提议的内容。
在此之前,我想问一问,由于技术限制,我是否有可能无法解决问题。现在,我将更详细地描述这种情况。

有一个带有数据库Adb和表dbo.At的MS SQL ServerA。我可以从中读到。还有一个MS SQL ServerB。我可以在这里读写。

我在计算机上打开了MS SQL Server Management Studio 2012。我与服务器A建立连接,并打开查询" select * from Adb.dbo.At ",效果很好。该连接使用Windows身份验证。
我与服务器B(也有Windows身份验证)连接,并带有查询" select * from A.Adb.dbo.At ",这导致上述错误。

在这一点上,我确实具有对A的读取权限,也具有对B的读写权限。我可以从A导出数据,然后使用计算机将其导入到B,即可以执行某种复制粘贴,然后我最终将拥有自己想要的东西。在我作为中间人的情况下,这两个服务器之间没有不可逾越的障碍。我只是想使其更简单。在我深入探讨SPN,委托,Kerberos,Active Directory和其他内容之前,我想问一下,假设我只对A读,对B读/写,我可能无法解决问题? >


似乎我有一个"双跳"问题。

https://blogs.technet.microsoft.com/askds/2008/06/13/understanding-kerberos-double-hop/

我找到了一种解决方法。我可以在服务器B上使用服务器代理。使用此代理,我可以使用服务器执行某些操作,例如查询其他服务器。代理作业是特定类型的(例如T-SQL脚本)。对于特定的作业类型,代理可以以"运行方式"模式运行作业(需要代理)。我创建了一个引用我的常规Windows登录名的代理。遗憾的是,T-SQL脚本类型的作业无法在"运行方式"模式下执行。但是PowerShell类型的作业可以。 PowerShell也可以执行SQL语句。因此,我创建了使用代理运行的PowerShell作业,命令为:

1
SQLCMD -Q"select * into Bdb.dbo.Bt from A.dbA.dbo.At" -E

这解决了我的问题。