查询执行显示登录失败时出错

6 sql-server sql-server-2000

我想从其他服务器检索表值

询问

EXEC sp_addlinkedserver @server = 'OPSERVER', @srvproduct = 'SQL Server'

EXEC sp_addlinkedsrvlogin @rmtsrvname = 'OPSERVER', @rmtuser = 'SA', @rmtpassword = 'SA'

SELECT * FROM OPSERVER.VENUS.dbo.TABL1
Run Code Online (Sandbox Code Playgroud)

上面的查询显示错误,因为用户“SA”登录失败

查询

EXEC sp_addlinkedserver @server = 'OPSERVER', @srvproduct = 'SQL Server'

sp_addlinkedsrvlogin 
  @rmtsrvname = 'OPSERVER', 
  @locallogin = 'sa', 
  @rmtuser = 'sa', 
  @rmtpassword = 'sa'

SELECT * FROM OPSERVER.VENUS.dbo.TABLE1



Showing error as "Login failed for user 'sa'"
Run Code Online (Sandbox Code Playgroud)

我的查询有什么问题。

Ole*_*Dok 2

您需要提供远程 sa 帐户的密码,如下所示:

EXEC sp_addlinkedsrvlogin @rmtsrvname = 'OPSERVER', @rmtuser = 'SA', @rmtpassword = 'RemoteSaPassword'
Run Code Online (Sandbox Code Playgroud)

或者如果您在本地 sa 帐户下运行

sp_addlinkedsrvlogin 
  @rmtsrvname = 'OPSERVER', 
  @locallogin = 'sa', 
  @rmtuser = 'sa', 
  @rmtpassword = 'RemoteSaPassword'
Run Code Online (Sandbox Code Playgroud)

对于 Windows 身份验证:

sp_addlinkedsrvlogin 
  @rmtsrvname = 'OPSERVER', 
  @locallogin = 'domain\username', 
  @rmtuser = 'sa', 
  @rmtpassword = 'RemoteSaPassword'
Run Code Online (Sandbox Code Playgroud)

或者

sp_addlinkedsrvlogin 
  @rmtsrvname = 'OPSERVER', 
  @useself = 'TRUE'
Run Code Online (Sandbox Code Playgroud)