SQL Server 2005命名实例端口问题

时间:2008-11-07 15:26:24

标签: sql-server sql-server-2005

我在一台服务器上有4个不同的SQL Server 2005命名实例(用于测试目的)。服务器上没有默认实例。

因为我最终需要允许通过防火墙与这些实例进行通信,所以我已经将每个实例的端口设置为静态侦听服务器的所有IP。

编辑:已启用TCP / IP,共享内存和命名管道。威盛被禁用。为TCP / IP协议上的所有IP静态设置端口,每个命名实例使用单独的端口。

我也运行SQLBrowser服务,并且所有实例都配置为允许远程连接。

一个实例设置为默认端口(1433),它可以正常工作。

然而,其他情况表现出非常奇怪的行为。当我使用网络中的Sql Server Management Studio连接到它们时(所以我还没有穿过防火墙),工作室连接时没有抱怨。但是,只要我尝试展开实例的数据库列表,或刷新实例,或几乎任何其他内容,我都会收到以下错误:

TITLE:Microsoft SQL Server Management Studio


无法检索此请求的数据。 (Microsoft.SqlServer.SmoEnum)

如需帮助,请点击:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476


其他信息:

无法连接到服务器。 (Microsoft.SqlServer.ConnectionInfo)


已成功与服务器建立连接,但在登录过程中发生错误。 (提供者:命名管道提供程序,错误:0 - 管道的另一端没有进程。)(Microsoft SQL Server,错误:233)

如需帮助,请点击:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=233&LinkId=20476


4 个答案:

答案 0 :(得分:2)

  

要做的第一件事就是尝试   添加前缀np:或tcp :( for   之前是命名管道或TCP / IP)   服务器的名称。对于tcp / ip,   您也可以尝试添加端口   数字(,1433)之后的名称   服务器。如果这不是默认值   例如,您必须添加名称   服务器名称后面的实例;   例如:

> sqlcmd -S
> tcp:NameOfTheServer\sqlexpress,1433

编辑:删除了源链接,因为它现在是一个死链接

答案 1 :(得分:2)

Bofe的答案奏效了,所以这表明某些东西与港口有些不对。

事实证明,在命名实例的TCP / IP设置中,我在协议上监听了All set,然后为IPAll设置了静态端口,但为IP1设置了动态端口。我曾经假设,因为IP1被禁用,我不需要担心它,但显然如果你有Listen All设置,那么IP1的enabled属性将被忽略。因此,在服务器上只有一个IP地址,并配置IP1动态端口和IPAll静态端口会引起某种奇怪的冲突。

要解决这个问题,我只需将IP1设置为使用与IPAll相同的静态端口,启用IP1,重新启动服务器,并且事情就像它们应该的那样工作,而不必在连接字符串中明确设置端口。 / p>

答案 2 :(得分:1)

尝试为服务器上的每个实例使用不同的TCP / IP端口。您需要进入SQL Server配置管理器才能更改这些设置。在TCP / IP下,您可以更改端口号,然后在连接时在连接字符串或SQL Management Studio中使用它们。

出于好奇,为什么你有服务器的实例?您可以使用一个实例并拥有多个数据库吗?如果您正在使用其他实例进行开发或测试,则可能需要考虑将这些实例移动到另一个框中。

答案 3 :(得分:0)

尝试启用与SQL Server实例的TCP / IP通信。如果您最终将要遍历防火墙,那么您可能希望使用TCP / IP而不是命名管道。