Ian*_*oyd 5 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'
Run Code Online (Sandbox Code Playgroud)
它创造良好。但是任何查询链接服务器的尝试,例如:
SELECT * FROM uranium.Periodic.dbo.Users
Run Code Online (Sandbox Code Playgroud)
结果是
Msg 18456, Level 14, State 1, Line 1
Login failed for user 'BatteryStaple'.
Run Code Online (Sandbox Code Playgroud)
除了我知道凭据是正确的:
BatteryStapleHorsecorrect因为当我使用 SQL Server Management Studio 或任何其他能够连接到数据库的技术直接连接时,我可以登录。
sp_addlinkedsrvlogin)注意:新的 SQL Server 2014 安装。每个现有的 SQL 2000、2005、2008、2008 R2 都可以与它们的uranium链接服务器通信。我确定这与 Microsoft 令人沮丧的默认策略中断有关。
问题是 SQL Server Management Studio 界面使用 OLEDB 提供程序创建链接服务器:
这相当于原始的 T-SQL:
--Create the link to server "uranium"
EXEC master.dbo.sp_addlinkedserver
@server = N'uranium',
@srvproduct=N'', @provider=N'SQLNCLI'
Run Code Online (Sandbox Code Playgroud)
修复方法是将链接服务器创建为SQL Server:
--Create the link to SQL Server "uranium"
EXEC master.dbo.sp_addlinkedserver
@server = N'uranium',
@srvproduct=N'SQL Server'
Run Code Online (Sandbox Code Playgroud)
应该没关系。可能是 Microsoft SQL Server 2014 12.0.4213.0 中的回归。可能会在服务包中修复 - 如果有的话。
但它就在那里;解决了。