2014-02-12 103 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地址,但我認爲或者應該工作。另外,該反斜槓可能會產生問題,可能不得不逃避該角色。

相關問題