Her*_*ill 9 sql-server linked-server
我正在尝试从远程SQL Server中提取数据.我可以使用SQL身份验证访问远程服务器; 我没有运气使用与sp_addlinkedserver相同的凭据.
我正在尝试这样的事情:
Exec sp_dropserver 'Remote', 'droplogins'
go
EXEC sp_addlinkedserver
@server='Remote',
@srvproduct='',
@provider='SQLNCLI',
@datasrc='0.0.0.0'
EXEC sp_addlinkedsrvlogin
@useself='FALSE',
@rmtsrvname='Remote',
@rmtuser='User',
@rmtpassword='Secret'
Select Top 10 * from Remote.DatabaseName.dbo.TableName
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
OLE DB provider "SQLNCLI" for linked server "Remote" returned message "Login timeout expired". OLE DB provider "SQLNCLI" for linked server "Remote" returned message "An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.". Msg 53, Level 16, State 1, Line 0 Named Pipes Provider: Could not open a connection to SQL Server [53].
同样,我可以使用这些确切的凭据直接访问服务器(在SQL Management Studio中),因此我的网络或凭据不会出现问题.
我在网上看到的大多数示例似乎涉及Windows域帐户,而不是SQL安全登录.这不适用于SQL身份验证吗?
小智 10
为解决上述问题,我修改了Linked Server定义以明确指定TCP:
EXEC sp_addlinkedserver
@server='TEST_LINK',
@srvproduct='',
@provider='SQLNCLI',
@datasrc='tcp:0.0.0.0'
EXEC sp_addlinkedsrvlogin
@useself='FALSE',
@rmtsrvname='TEST_LINK',
@rmtuser='user',
@rmtpassword='secret'
Run Code Online (Sandbox Code Playgroud)
这对我有用.此方法还允许我为远程服务器指定非标准端口:
EXEC sp_addlinkedserver
@server='TEST_LINK',
@srvproduct='',
@provider='SQLNCLI',
@datasrc='tcp:0.0.0.0,1111'
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助
| 归档时间: |
|
| 查看次数: |
43122 次 |
| 最近记录: |