这里有
有三台实例A,B,C
版本:SQL SERVER 2005 SP3 64
A上有用户USER_A ;B上有USER_B;C上有USER_C
B和C 唯一区别就是,B不是默认实例,C是默认实例.
在A 上用USER_B建立链接服务器a->b 失败
在A 上用USER_C建立链接服务器a->c 成功
在b 上用USER_a建立链接服务器b->a 成功
在b 上用USER_c建立链接服务器b->c 成功
在c 上用USER_a建立链接服务器c->a 成功
在c 上用USER_b建立链接服务器c->b 成功
一句话就是,在A 上建立链接服务器,如果目标不是默认实例的话,就会失败.
提示如:链接服务器已创建单连接测试失败.是否要保留该链接服务器?
其它信息:
执行Transcact-SQL 语句或批处理时发生了异常.(Microsoft.SqlServer.ConnectionInfo)
命名管道提供程序:无法打开与SQL SERVER 的连接[53]。
链接服务器"TEST"的OLE DB 访问接口"SQLNCLI"返回了消息"登录超时已过期"
链接服务器"TEST"的OLE DB 访问接口"SQLNCLI"返回了消息"建立到服务器的连接时发生错误.
连接到SQL SERVER 2005时,默认设置 SQL SERVER 不允许远程连接这个事实可能会导致失败>"
(Microsoft SQL Server,错误:53)
另外提示,用UDL测试的话也是同样的结果
步骤为新建文本文件,改后缀名为UDL
提供程序:Microsft OLE DB Provider for SQL Server
连接:设置连接B相关参数.如果在A服务器上运行失败,但是如果COPY该UDL放在C上去运行,又能成功.太奇怪了
不知道大家有遇到过没有?
部分代码:
EXEC master.dbo.sp_addlinkedserver @server = N'192.168.0.2\DB_B', @srvproduct=N'ms', @provider=N'MSDASQL', @datasrc=N'192.168.0.2\DB_B'
.....
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'192.168.0.2\DB_B', @locallogin = NULL , @useself = N'False', @rmtuser = N'USER_B;', @rmtpassword = N'123'
GO