SQL SERVER 2005 相互链接服务器问题

lcw321321 2010-07-07 02:53:45


这里有
有三台实例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
...全文
640 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcw321321 2011-04-12
  • 打赏
  • 举报
回复
事实证明没影响
lcw321321 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 garnett_kg 的回复:]
SQL Browser服务都启动了没有?
[/Quote]
谢谢,问题已经解决了,SQL Browser是启动了的,现在就是考虑指定非默认实例端口对正常运行有没有影响
Garnett_KG 2010-07-07
  • 打赏
  • 举报
回复
SQL Browser服务都启动了没有?
lcw321321 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sql77 的回复:]
引用 10 楼 lcw321321 的回复:
引用 1 楼 sql77 的回复:
B不是默认实例,

端口是啥

TCP 是动态端口来着

?
你在配置中设置端口下
[/Quote]
姥姥的,终于搞出来,谢谢各位,果然 是WINDOWS 防火墙的问,出了A 以外,其它的防火墙都是关闭,由于默认实例是1433端口,而防火墙是系统维护人员增加允许1433可以访问.但是动态端口就不允许访问了.
强制给非默认实例(群集环境下)设个固定端口应该没影响吧?
SQL77 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lcw321321 的回复:]
引用 1 楼 sql77 的回复:
B不是默认实例,

端口是啥

TCP 是动态端口来着
[/Quote]
?
你在配置中设置端口下
lcw321321 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sql77 的回复:]
B不是默认实例,

端口是啥
[/Quote]
TCP 是动态端口来着
永生天地 2010-07-07
  • 打赏
  • 举报
回复

[Quote=引用 8 楼 lcw321321 的回复:]
引用 7 楼 xys_777 的回复:
同时使用TCP/IP和named pipes

再换b的机器名试试

都试过了,而且TCP/IP和named pipes都是N年以前都是启动的.
[/Quote]

telnet b的端口也都试了?
lcw321321 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xys_777 的回复:]
同时使用TCP/IP和named pipes

再换b的机器名试试
[/Quote]
都试过了,而且TCP/IP和named pipes都是N年以前都是启动的.
永生天地 2010-07-07
  • 打赏
  • 举报
回复
同时使用TCP/IP和named pipes

再换b的机器名试试
lcw321321 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sql77 的回复:]
B不是默认实例,

端口是啥
[/Quote]
不是B的问题,因为C->B是可以连通的.B->A,C,也是通的.同理,我这里测了D,E,F,G,H,G.....
多个实例链接服务器,只要不是默认实例,A 就连不过去,但是B,C,D,E,F,G,H,G.....之间无论怎么组合都能成功.
永生天地 2010-07-07
  • 打赏
  • 举报
回复
确实奇怪
-狙击手- 2010-07-07
  • 打赏
  • 举报
回复
tcp/ip
thinclient 2010-07-07
  • 打赏
  • 举报
回复
我来学习了
水族杰纶 2010-07-07
  • 打赏
  • 举报
回复
SQL SERVER 不允许远程连接这个事实可能会导致失败
查查这个错误的解决方法
baidu下应该很多
SQL77 2010-07-07
  • 打赏
  • 举报
回复
B不是默认实例,

端口是啥

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧