我正在尝试运行从远程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服务器获取数据时,会出现错误,指出未找到或无法访问远程服务器。
的连接字符串这是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();
}
}
答案 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地址,虽然我认为要么应该工作。 此外,反斜杠可能会产生问题,可能必须逃避该角色。