Sql-Server
SSMS 連接,連結伺服器失敗
有一台 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_HOST
asREMOTE_LOGIN
。請確認您確實連接到
LOCAL_SERVER
asLOCAL_LOGIN
並且密碼REMOTE_LOGIN
正確。你設置它的方式是它工作的唯一情況。