同一用户的 SQL Server 链接服务器目录因我记录的计算机而异

SQL Server Linked Server Catalogs differ for same user depends on machine on which I log

提问人:Filip Grzebalski 提问时间:11/17/2023 最后编辑:XedniFilip Grzebalski 更新时间:11/17/2023 访问量:22

问:

如标题所示。我有两个 SQL Server,我通过 WindowsAuth 与我的公司登录名连接到这两个服务器:

  1. MY_SERVER - 我拥有常规管理员权限的地方,该权限是在同名的 Windows 服务器上设置的
  2. SAP_SERVER - SAP 服务器,我对它只有三个数据库的数据读取器访问权限,比如 db1、db2 和 db3

此外,我可以从本地笔记本电脑访问 SSMS 中的这两个服务器,或者连接到远程桌面MY_SERVER然后在 SSMS 中连接。

当我来工作时,已经将链接服务器从 1 设置为 2,所以: 我通过远程桌面连接到MY_SERVER,在那里我打开了 SSMS,并使用我的公司登录名使用 WindowsAuth 连接到本地 SQL Server (MY_SERVER),我可以运行示例查询:

SELECT a.*, b.* 
FROM MY_SERVER.db1.dbo.tabA a 
LEFT JOIN SAP_SERVER.db1.dbo.tabB b 
    ON a.col1=b.col1

但是,当我尝试在本地笔记本电脑上登录 SSMS 以使用我的公司登录名使用 WindowsAuth 进行MY_SERVER时,我已经无法运行

SELECT a.*, b.* 
FROM MY_SERVER.db.sch.tabA a 
LEFT JOIN SAP_SERVER.db.sch.tabB b 
    ON a.col1=b.col1 

我收到错误消息,我需要创建链接服务器 (???),但正如我提到的,它已经创建,所以我在某个地方找到了可能需要将我的登录名添加为 linkedserver_login,我做到了。这部分成功,因为现在我收到其他错误消息:

链接服务器“SAP_SERVER”的 OLE DB 访问接口“MSOLEDBSQL”不包含表“db”。sch”。tabB“”。该表不存在,或者当前用户对该表没有权限。

我很少搜索,我发现当我转到SSMS中的服务器对象/链接服务器/SAP_SERVER/目录(或简单地运行)时,数据库会有所不同,具体取决于我是在本地计算机上还是在远程桌面上MY_SERVER。在第二个上,我可以看到 db1、db2 和 db3 应该的样子,但在第一个上,我可以看到两个 db,在直接连接到 SAP_SERVER (???) 时,我甚至无法正常访问它们。sp_catalogs

我的问题是,如果有人遇到类似的问题,也许以某种方式解决了它?

在我看来,一些简单的 striaghtforward 解决方案可能只是将 dbs 添加到链接服务器的目录中,但我试图在 Microsoft 文档上找到任何功能来做到这一点,但我找不到任何东西。

T-SQL SSMS

评论

0赞 siggemannen 11/17/2023
使用是没有意义的:如果您已经在 server1 上。你不能与自己建立联系(至少你不应该这样做)。如果您成功从笔记本电脑连接,我猜您实际上会先连接到其他服务器。或者,可能是为指向其他位置的链接服务器指定了默认登录名。SERVER1和SAP_SERVER的回报是什么?还要检查可能是由于 SPN 名称,您的 Windows 用户在通过笔记本电脑连接时丢失,然后登录linked_logins命中server1.db.schema.tableselect * from sys.serverssys.linked_logins
0赞 T N 11/17/2023
推测:如果在创建链接服务器连接时指定了显式远程服务器登录名,则两个链接服务器连接可能使用不同的凭据。否则,目标服务器可能信任来自其中一个原始服务器的凭据,而不是另一个服务器。我不是专家,所以我的评论必然是模糊的。(这里有人知道如何通过链接服务器连接询问我是谁吗?

答: 暂无答案