SQL错误:26 - 找到指定的服务器/实例时出错

时间:2014-02-12 18:51:01

标签: c# sql sql-server

我正在尝试运行从远程sql server获取数据的程序,它适用于来自另一个远程站点的同事但是当我运行程序时,调试器说Sql_Reader返回null。

我可以ping并连接到远程sql server。每个http://blogs.msdn.com/b/sql_protocols/archive/2007/05/13/sql-network-interfaces-error-26-error-locating-server-instance-specified.aspx实例都是正确的以及服务器上的防火墙设置但是当我运行程序从sql服务器获取数据时,会出现错误,指出未找到或无法访问远程服务器。

我检查了每error: 26 - Error Locating Server/Instance Specified. (Can't connect to my local Db From my host server)

的连接字符串

这是GetConnectionString方法中的连接字符串。

    return @"Data Source= 2.2.2.2\SQLEXPRESS; Persist Security Info=False;User ID=myusername;Password=mypassword;Initial Catalog=SomeDataStructure;";

在具有sql_Connection.Open();

的行上发生以下错误

SqlException未处理。 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)

    // Body of the method
    str_Query = "SELECT " + dict_SearchData["FieldName"] + " FROM " + dict_SearchData["Table"] +
            " WHERE " + dict_SearchData["IndexColumn"] + " = '" + dict_SearchData["IndexRow"] + "';";
        using (SqlConnection sql_Connection = new SqlConnection(dict_SearchData["ConnectionString"]))
        {
            SqlCommand sql_Command = new SqlCommand(str_Query, sql_Connection);
            sql_Connection.Open();
            SqlDataReader sql_Reader = sql_Command.ExecuteReader();
            try
            {
                sql_Reader.Read();
                str_FieldValue = sql_Reader[0].ToString();
            }
            catch (System.InvalidOperationException)
            {
                //ignore the exception 
            }
            finally
            {
                // Always call Close when done reading. 
                sql_Reader.Close();
            }
        }

2 个答案:

答案 0 :(得分:3)

我将端口号添加到连接字符串中,然后我可以使用该应用程序远程连接到数据库。我在逗号后跟ip地址后添加了端口号。

return @"Data Source= 2.2.2.2,1433\SQLEXPRESS; Persist Security Info=False;User ID=myusername;Password=mypassword;Initial Catalog=SomeDataStructure;";

答案 1 :(得分:1)

您的连接字符串可能包含额外字符或格式不正确。尝试采取额外步骤将字符串放入本地字符串变量,然后将其分配给ConnectionString对象。这样,您可以单步执行代码并离散地检查字符串值。此外,更常见的自定义是指定服务器名称而不是IP地址,虽然我认为要么应该工作。 此外,反斜杠可能会产生问题,可能必须逃避该角色。