[英]SQL error:26 - Error Locating Server/Instance Specified
我試圖運行一個從遠程sql服務器獲取數據的程序,該程序適用於另一個遠程站點的同事,但是當我運行該程序時,調試器說Sql_Reader返回null。
我可以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服務器獲取數據時,出現錯誤並指出找不到或無法訪問遠程服務器。
我檢查了每個錯誤的連接字符串:26-指定服務器/實例時出錯。 (無法從主機服務器連接到本地Db)
這是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();
}
}
我將端口號添加到連接字符串中,並且能夠使用該應用程序遠程連接到數據庫。 我在逗號后面的IP地址后面添加了端口號。
return @"Data Source= 2.2.2.2,1433\SQLEXPRESS; Persist Security Info=False;User ID=myusername;Password=mypassword;Initial Catalog=SomeDataStructure;";
看來您的連接字符串可能包含多余的字符或格式錯誤。 嘗試采取額外的步驟,將字符串放入本地字符串變量,然后將其分配給ConnectionString對象。 這樣,您可以單步執行代碼並離散檢查字符串值。 另外,更常見的習慣是指定服務器名稱而不是IP地址,盡管我認為兩者都應該起作用。 同樣,反斜杠可能會產生問題,可能必須轉義該字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.