查询链接服务器时登录失败

时间:2016-03-01 20:19:19

标签: sql-server linked-server

我正在尝试在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或任何其他能够连接到数据库的技术直接连接时登录。

enter image description here

奖金阅读

注意:安装新的SQL Server 2014。每个现有的SQL 2000,2005,2008,2008 R2都可以与其uranium链接服务器进行通信。我确信它与微软令人沮丧的broken by default policy相关。

2 个答案:

答案 0 :(得分:3)

问题是SQL Server Management Studio界面使用OLEDB Provider创建链接服务器:

enter image description here

这相当于原始的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设置身份验证可以解决该问题。

相关问题