【问题标题】:SQL Server - Linked servers, querying one way is fine but the other?SQL Server - 链接服务器,查询一种方式很好,但另一种?
【发布时间】:2023-03-30 06:54:01
【问题描述】:

我有两个 SQL Server,它们使用来自 ServerA 的 sp_addlinkedserver 'ServerB\Instance' 和来自 ServerB 的 sp_addlinkedserver 'ServerA\Instance' 链接。

如果我从 ServerA 执行以下查询,则一切正常:

SELECT *
FROM [ServerB\Instance].Database.dbo.Table

如果我从 ServerB 执行以下查询,则会发生错误:

SELECT *
FROM [ServerA\Instance].Database.dbo.Table

错误:

消息 18456,第 14 级,状态 1,第 1 行 用户 NT 登录失败 权威\匿名登录'。

在服务器 A 和服务器 B 上运行 SQL Server 的服务帐户已在两台服务器上获得提升的权限,以尝试解决问题,但没有成功。

我已经完成了research,但希望在一种通信方式可行的情况下避免复杂的过程。

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:

    我已经按照流程解决了这个问题:

    1. 删除了两个链接的服务器。
    2. 从 ServerA RDP (SSMS) 为 ServerA 执行 sp_addlinkedserver,从 ServerB RDP (SSMS) 为 ServerB 执行 sp_addlinkedserver。

    之前我只从一个服务器 RDP (SSMS) 会话中为两台服务器执行了 sp_addlinkedserver。从每台服务器执行已经解决了这个问题。如果有人可以添加 cmets 来说明为什么会这样,我将非常感激。

    【讨论】:

    • 这也解决了我的问题。试图将我的所有服务器从 SSMS 交叉链接到其中之一。我认为原因是当你这样做时你正在调用第二个跃点。直接从服务器控制台本身添加链接服务器为我修复了它。
    【解决方案2】:

    在 SQL Management Studio 中,查看从服务器 B 到服务器 A 的链接服务器的属性。您可以从那里查看一个安全“选项卡”。这将告诉您从 B 到 A 的连接正在使用的安全上下文。当您没有为链接服务器设置有效的安全上下文时,通常会发生您遇到的错误。

    它可以从 A 到 B 而不是 B 到 A 的原因是您需要在每一侧正确设置链接服务器。只为一个人做这件事是不会双向的。

    【讨论】:

      【解决方案3】:

      您必须将本地用户映射到另一台服务器上的远程用户。 Do 可以通过调用 sp_addremotelogin() 来执行此操作,如下所述:http://msdn.microsoft.com/en-us/library/ms186338.aspx

      【讨论】:

        【解决方案4】:

        要解决此问题,请使用以下方法之一:

        • 通过使用 sp_addlinkedsrvlogin 存储过程或企业管理器中链接服务器属性对话框的安全选项卡,将服务器 A 上的客户端映射到服务器 B 上的标准安全登录。

        • 如果您在基于 Microsoft Windows 2000 的计算机上运行的 SQL Server 实例上运行分布式查询,请将 SQL Server 配置为使用命名管道服务器网络库而不是使用 TCP/IP 服务器网络库或多协议服务器网络库。要为 SQL Server 配置服务器网络库,请使用服务器网络实用程序。

        看看:

        http://support.microsoft.com/kb/238477

        【讨论】:

          猜你喜欢
          • 2011-11-22
          • 1970-01-01
          • 2011-05-04
          • 2014-12-29
          • 1970-01-01
          • 1970-01-01
          • 2022-10-05
          • 1970-01-01
          • 2011-01-11
          相关资源
          最近更新 更多