Sql-Server

SSMS 連接,連結伺服器失敗

  • February 13, 2019

有一台 SQL Server 2012 機器,我有登錄名和密碼。這是 SQL Server 登錄,而不是 AD 登錄。

我可以使用 SSMS 登錄。但是當我在我的 SQL Server 中配置連結伺服器時,我收到錯誤消息,指出此登錄名無權訪問:

無法處理對象 ““DB”.“SCHEMA”.“TABLE”"。連結伺服器“SERVER”的 OLE DB 提供程序“SQLNCLI11”指示該對像沒有列或目前使用者對該對像沒有權限。

知道為什麼會這樣嗎?

更新:這是連結伺服器的腳本創建:

USE [master]
GO

/****** Object:  LinkedServer [REMOTE_SERVER_HOST]    Script Date: 16/03/2016 13:56:56 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'REMOTE_SERVER_HOST', @srvproduct=N'SQL Server'
/* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'REMOTE_SERVER_HOST',@useself=N'False',@locallogin=N'LOCAL_LOGIN',@rmtuser=N'REMOTE_LOGIN',@rmtpassword='########'

GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'collation compatible', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'data access', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'dist', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'pub', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'rpc', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'rpc out', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'sub', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'connect timeout', @optvalue=N'0'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'collation name', @optvalue=null
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'lazy schema validation', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'query timeout', @optvalue=N'0'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'use remote collation', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER_HOST', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO

遠端伺服器中被呼叫的 SP 頂部應該有“set nocount on”。這將解決問題;前提是您具有所需的所有權限集。

可以肯定的是,基於這些命令:

EXEC master.dbo.sp_addlinkedserver @server = N'REMOTE_SERVER_HOST', @srvproduct=N'SQL Server'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'REMOTE_SERVER_HOST',@useself=N'False',@locallogin=N'LOCAL_LOGIN',@rmtuser=N'REMOTE_LOGIN',@rmtpassword='########'

您已經創建了一個名為 的連結REMOTE_SERVER_HOST伺服器LOCAL_SERVER。您已設置權限,因此如果您以 as 登錄,LOCAL_LOGIN它將LOCAL_SERVER連接到REMOTE_SERVER_HOSTas REMOTE_LOGIN

請確認您確實連接到LOCAL_SERVERasLOCAL_LOGIN並且密碼REMOTE_LOGIN正確。

你設置它的方式是它工作的唯一情況。

引用自:https://dba.stackexchange.com/questions/132213