2011-02-11 200 views
0

我有SQL Server 2000,它也有2个其他的SQL实例。主服务器没有问题,以后我讲的这两个实例,SQL Server实例的连接字符串

他们分享,

  1. Same machine
  2. Same IP
  3. Same Instance Name
  4. Same Port

我也想知道它是如何完成的。

使用查询分析器一旦连接,

MyServer\Invent (it connects to first instance) 
MyServer\Invent,1433 (it connects to second instance) 

(是的,它发生。我100%确定,因为我有在他们里面单独的DB)

现在它涉及到的问题,

使用C#SqlConnection,我无法连接到第一个,但可以连接到第二个。

1. Data Source=MyServer\Invent;Persist Security Info=True;Initial Catalog=TEST;uid=admin;pwd=123 
2. Data Source=MyServer\Invent,1433;Persist Security Info=True;Initial Catalog=TEST;uid=admin;pwd=123 

一旦我用它挂了一段时间,并得到以下错误消息第一个连接字符串...

“,而与SQL Server建立连接时出现与网络相关的或特定于实例的错误。验证实例名称是否正确以及SQL Server是否配置为允许远程连接(提供程序:SQL网络接口,错误:26 - 指定的错误定位服务器/实例)

在网上搜索这个,很多人说instal凌这样是可能的。并且一个连接应该使用命名管道(tcp/445)

任何想法如何解决这个问题? 任何可能的连接字符串格式? 无论如何为命名管道做连接字符串?

+0

仅供参考,我刚刚从Ports使用“企业管理器”进行了检查,共享1433.毫无疑问。 – 2011-02-11 10:57:58

回答

0

我想也许你的第一个实例实际上并没有在1433上进行监听,即使这通常是默认值。

我相信可以使用SQL Server配置实用程序更改默认端口。检查默认端口是什么,假设它不是1433,请尝试在第一个连接字符串中指定它。

这是some info关于如何检查您的实例正在监听哪个端口。

编辑:好吧,第一个实例正在侦听命名管道。也许server=np:MyServer\Invent;将工作,根据this page

+0

我也检查过...我对此100%有信心。我已经使用以下SP检查端口 DECLARE @tcp_port为nvarchar(5) EXEC xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE \ MICROSOFT \ MSSQLSERVER \ MSSQLSERVER \ SUPERSOCKETNETLIB \ TCP', @ value_name ='TcpPort', @value = @tcp_port OUTPUT select @tcp_port – 2011-02-11 10:54:59

+1

您是否尝试过`使用master Go Xp_readerrorlog`并寻找“正在监听xxxx:yyyy”? – Blorgbeard 2011-02-11 10:57:36

0

我认为你的问题是,一台服务器正在使用不同的端口。所以它使用的是TCP但是是一个不同的端口,你需要弄清楚它使用的是什么端口,然后将这个端口添加到你的连接字符串中,就像你在使用另一个实例(1433)一样。

你SQL Server配置管理器。 导航到SQL Server网络配置节点并展开它。 在子节点中找到实例 现在右侧会显示协议(共享内存,命名管道,TCP等) 双击TCP。 在弹出的对话框中,切换到IP地址选项卡。 一直向下滚动到“IP All”部分

它对TCP端口有什么意义? enter image description here