我正在尝试在SQL Server中创建链接服务器:
--Create the link to server "uranium"
EXEC master.dbo.sp_addlinkedserver
@server = N'uranium',
@srvproduct=N'',
@provider=N'SQLNCLI'
--Add the catch-all login with SQL Server authentication
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'uranium',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'BatteryStaple',
@rmtpassword='Horsecorrect'
它创造了很好的。但任何查询链接服务器的尝试,例如:
SELECT * FROM uranium.Periodic.dbo.Users
结果
Msg 18456, Level 14, State 1, Line 1
Login failed for user 'BatteryStaple'.
除非我知道凭证是正确的:
BatteryStaple
Horsecorrect
因为我可以在使用SQL Server Management Studio或任何其他能够连接到数据库的技术直接连接时登录。
sp_addlinkedsrvlogin
) 注意:安装新的SQL Server 2014。每个现有的SQL 2000,2005,2008,2008 R2都可以与其uranium
链接服务器进行通信。我确信它与微软令人沮丧的broken by default policy相关。
答案 0 :(得分:3)
问题是SQL Server Management Studio界面使用OLEDB Provider创建链接服务器:
这相当于原始的T-SQL:
--Create the link to server "uranium"
EXEC master.dbo.sp_addlinkedserver
@server = N'uranium',
@srvproduct=N'', @provider=N'SQLNCLI'
修复方法是将链接服务器创建为 SQL Server :
--Create the link to SQL Server "uranium"
EXEC master.dbo.sp_addlinkedserver
@server = N'uranium',
@srvproduct=N'SQL Server'
无所谓。可能是Microsoft SQL Server 2014 12.0.4213.0中的回归。可以在服务包中修复 - 如果有的话。
但它确实存在;解决。
答案 1 :(得分:0)
旧帖子,但可能仍然有用。以我为例,仅设置了Windows身份验证。在链接服务器上为Windows和SQL Server设置身份验证可以解决该问题。