SQL Server - 链接服务器错误 - 无法连接到服务器 XYZ,因为

San*_* KB 3 linked-server sql-server-2012 transactional-replication

正在使用的服务器:SQL Server 2012 SP3
我刚刚收到一个奇怪的错误(很奇怪,因为它之前工作过)

could not connect to server LNK_SRV because sa is not defined as a remote login
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 不知道为什么我们会收到错误。

sys.servers 说 LNK_SRV 的 is_linked = 0 - 不知道为什么。返回结果如下

select top 10 * from LNK_SRV.DBName.dbo.TblName
Run Code Online (Sandbox Code Playgroud)

但手续却失败了

exec LNK_SRV.DBName.dbo.ProcName
Run Code Online (Sandbox Code Playgroud)

在我们删除链接服务器并重新添加它之前,它工作正常。
此外,LNK_SRV 也用于复制。

注意:我知道 sa 很糟糕。很快就会得到处理。

San*_* KB 5

链接服务器还用于复制。
订阅和创建链接服务器的顺序是问题所在。

重现错误:
1. 删除订阅
2. 删除链接服务器
3. 首先配置订阅
4. 接下来是链接服务器
5. 测试
- a。Select 将返回结果
- b.Exec proc 结果出错


修复:
1. 删除订阅
2. 删除链接服务器
3. 首先创建链接服务器
4. 接下来配置订阅
5. 测试
- a。Select 将返回结果
- b.Exec proc 将会成功

此外,在链接服务器上执行以下操作也有效。

--Run this statement on LNK_SRVR
exec sp_AddRemoteLogin 'CurrServer','sa'
Run Code Online (Sandbox Code Playgroud)