更新:我已经确定SQLEnent代码在第一次调用时超时,但在所有后续调用中都有效。此外,当与Management Studio连接时,它也会在第一次超时,然后在我再次尝试时连接。
Original:嘿,伙计们,我有一个非常奇怪的问题,我似乎无法解决。我有一个应用程序连接到几个不同版本的SQL Server。我没有问题连接到2005或2008 R2。但我有超时问题与2008标准。我甚至写了一个示例应用程序尝试和故障排除。以下是工作的示例代码:
OdbcConnection conn = null;
OdbcDataAdapter adp = null;
DataSet resultSet = new DataSet();
DataTable result = null;
string queryString = Query.Text;
conn = new OdbcConnection(@"Driver={SQL Server Native Client 10.0};Server=MyServer\DataSource;Database=MyDatabase;Uid=MyUser;Pwd=ThePassword;");
conn.Open();
adp = new OdbcDataAdapter(queryString, conn);
adp.Fill(resultSet);
result = resultSet.Tables[0];
ResultsGrid.DataSource = result;
下面是超时的示例代码:
SqlConnection conn = null;
SqlDataAdapter adp = null;
DataSet resultSet = new DataSet();
DataTable result = null;
string queryString = Query.Text;
conn = new SqlConnection(Application Name=HCGPrevision; Data Source=MyServer\DataSource; Initial Catalog=MyDatabase;UID=MyUser;PWD=ThePassword;);
conn.Open();
adp = new SqlDataAdapter(queryString, conn);
adp.Fill(resultSet);
result = resultSet.Tables[0]; //Assume only one result set/table.
ResultsGrid.DataSource = result;
第二组代码将在SQLServer2008R2中的数据库上工作,但不是Standard/R1版本。连接字符串似乎对任何其他SQL Server都可以正常工作,但对这台SQL Server就不行了。我们已经使用此代码5年多了,从来没有出现过此问题。我确保SQL启用了命名管道并混合了命名管道(Windows/SQL)身份验证。ODBC可以工作而SQL不能工作的事实是奇怪的。请让我知道我错过了什么!
谢谢你,
埃里克
1条答案
按热度按时间flseospp1#
好吧,我终于找到了答案。它测试了我的代码与SQL 2005,并开始得到同样的问题。所以我做了一些更多的搜索,并无意中发现了这个:
http://blogs.msdn.com/b/adonet/archive/2010/04/18/sqlclient-default-protocol-order.aspx
我在连接字符串的数据源中添加了“np:“,Viola!连接时间!