C# SQL Server实例的连接字符串

C# SQL Server实例的连接字符串,c#,sql-server,connection-string,instance,named-pipes,C#,Sql Server,Connection String,Instance,Named Pipes,我有SQLServer2000,它还有另外两个SQL实例。主服务器没有问题,下面我讲的是这两个例子 他们分享, 同一台机器 相同IP 相同实例名 同一端口 我也很想知道它是怎么做到的 一旦连接到,使用查询分析器 MyServer\Invent (it connects to first instance) MyServer\Invent,1433 (it connects to second instance) (是的,确实如此。我100%确信这一点,因为我在其中有单独的DBs) 现在说到问题

我有SQLServer2000,它还有另外两个SQL实例。主服务器没有问题,下面我讲的是这两个例子

他们分享,

  • 同一台机器
  • 相同IP
  • 相同实例名
  • 同一端口
  • 我也很想知道它是怎么做到的

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

    MyServer\Invent (it connects to first instance)
    MyServer\Invent,1433 (it connects to second instance)
    
    (是的,确实如此。我100%确信这一点,因为我在其中有单独的DBs)

    现在说到问题

    使用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-定位指定的服务器/实例时出错)

    在网上搜索这个,很多人说安装这样的设备是可能的。一个连接应使用命名管道(tcp/445)

    你知道怎么解决这个问题吗? 任何可能的连接字符串格式?
    是否要为命名管道创建连接字符串?

    我认为可能您的第一个实例实际上没有侦听1433,即使这通常是默认值

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

    下面介绍如何检查实例正在侦听的端口


    编辑:确定,第一个实例正在侦听命名管道。可能
    server=np:MyServer\Invent
    将按照运行。

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

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

    它对TCP端口说了什么?

    我也检查过了。。。我对此有100%的信心。我已使用以下SP检查端口DECLARE@tcp_port nvarchar(5)EXEC xp_regrad@rootkey='HKEY_LOCAL_MACHINE',@key='SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER\SUPERSOCKETNETLIB\tcp',@value_name='TcpPort',@value=@tcp\u端口输出选择@tcp\u端口您是否尝试过
    使用master Go Xp\u readerrorlog
    并查找“侦听x.x.x:yyyy”?@Blorgbeard,尝试过我认为有一个线索,对于这两个实例,我得到了以下信息。1.SQL server正在共享内存(命名管道)上侦听。2.SQL server正在侦听172.16.80.25:1433。我也检查过了。。。我对此有100%的信心。我使用以下SP检查端口DECLARE@tcp_port nvarchar(5)EXEC xp_regrad@rootkey='HKEY_LOCAL_MACHINE',@key='SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER\SUPERSOCKETNETLIB\tcp',@value_name='TcpPort',@value=@tcp_port OUTPUT select@tcp_port其他实例如何?这两个实例都启用了TCP吗?防火墙问题呢。你能在盒子上运行一个测试应用程序吗?这样就可以消除任何防火墙问题。两个实例都使用1433,我可以通过Enterprise Manager和Query Analyzer进行连接。所以我希望这意味着不能有任何防火墙限制。从您的计算机可以连接到这两个实例?是的,那么就没有防火墙问题了。尝试在连接字符串中使用网络库参数。使用NamedpipesFYI,我刚刚检查了使用“Enterprise Manager”的端口,它们都共享1433。毫无疑问。也许是防火墙问题?