2014-02-12 53 views
0

我试图运行一个程序,从远程SQL服务器获取数据,它适用于另一个远程站点的同事,但是当我运行该程序时,调试器说Sql_Reader返回null。SQL错误:26 - 错误定位服务器/实例指定

我可以ping和连接到远程sql服务器。实例是正确的,以及服务器上的防火墙设置为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(); 
      } 
     } 
+1

有许多可能原因的常见错误消息。 http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a-connection-to-sql- server-microsoft-sql-server-error/ –

+0

SQL Server是否允许远程连接?另外是配置为使用SQL Server身份验证的实例? – Milen

回答

2

我将端口号添加到连接字符串,并且我能够通过应用程序远程连接到数据库。我在逗号后面的IP地址后添加了端口号。

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

它看起来像你的连接字符串可以有多余的字符或格式错误。尝试将字符串放入本地字符串变量中,然后将其分配给ConnectionString对象。通过这种方式,您可以逐步浏览代码并分散检查字符串值。此外,更常见的习惯是指定服务器名称,而不是IP地址,但我认为或者应该工作。另外,该反斜杠可能会产生问题,可能不得不逃避该角色。

相关问题