我試圖運行一個程序,從遠程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服務器獲取數據時,存在錯誤,表示遠程服務器未找到或無法訪問。
這是連接字符串,它是在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();
}
}
有許多可能原因的常見錯誤消息。 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/ –
SQL Server是否允許遠程連接?另外是配置爲使用SQL Server身份驗證的實例? – Milen