0

我正在尝试连接到 sqlServer。为此,我使用以下代码:

string server = "1.1.1.1,1433";
var stringBuilder = new SqlConnectionStringBuilder
                    {
                        UserID = "id",
                        Password = "pass",
                        MultipleActiveResultSets = true,
                        DataSource = server,
                        NetworkLibrary = "DBMSSOCN",
                        InitialCatalog = "iCatalog"
                    };


using (var con = new SqlConnection(stringBuilder.ToString()))
{
    try
    {
        con.Open();
        MessageBox.Show("Connected");
    }
    catch (Exception exception)
    {
        MessageBox.Show(exception.Message);
    }
}

但是当程序试图打开连接时,我得到异常“建立与 sql Server 的连接时发生与网络相关或特定于实例的错误......”。如果我将 ipAddress 和端口更改为 serverName 和实例,如下所示:

var server = @"MSSQL01\SQLENTW";

我能够连接到服务器。ConnectionString 就像在 connectionstrings.com 中一样。那么有人可以指出我在哪里做错了吗?

提前致谢。

4

3 回答 3

2

尝试这个

string server = "1.1.1.1:1433";
于 2013-10-09T12:58:38.443 回答
1

我认为您的机器正在运行多个 SQL Server 实例。例如。MACHINENAME\SQLEXPRESS、MACHINENAME\MSSQLSERVER 等

当您提供 IP 地址时,它会连接到默认实例。由于没有使用 TCP/IP 启用它,因此它返回错误。您可以转到 sql Server 配置(配置工具-> SQL Server 配置实用程序),并检查为所有实例启用的 tcp。

于 2013-10-09T12:59:56.320 回答
0

添加实例名称怎么样?

1.1.1.1\SQLENTW,1433

除了上面使用下面的spinet来查找SQLServer正在侦听的端口

DECLARE @PORT nvarchar(20), @key nvarchar(100)  
IF CHARINDEX('\',@@SERVERNAME,0) <>0  
BEGIN  
           SET @KEY = 'SOFTWARE\MICROSOFT\MICROSOFT SQL SERVER\' +@@SERVICENAME+  
                                                                                           '\MSSQLSERVER\SUPERSOCKETNETLIB\TCP'  
END  
ELSE  
BEGIN  
          SET @KEY = 'SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER\SUPERSOCKETNETLIB\TCP'  
END  

EXEC MASTER..XP_REGREAD @ROOTKEY='HKEY_LOCAL_MACHINE', @KEY=@KEY, @VALUE_NAME='TCPPORT', @VALUE=@PORT OUTPUT  
SELECT @PORT 
于 2013-10-09T13:02:52.790 回答