【发布时间】:2013-02-27 11:05:01
【问题描述】:
我在 Azure SQL Server 上跨多个数据库运行查询时遇到问题。这是我在执行后从查询中返回 DataTable 的函数。该函数将数据库名称作为字符串并将其与要执行的查询一起插入到连接字符串中。
该函数在我运行一次时运行良好,按预期返回填充了返回行的 DataTable,但是当我使用“foreach”语句调用该函数(遍历数据库名称列表)时,我得到一个超时错误或登录失败错误。
对此的任何帮助将不胜感激。
public static DataTable runQuery(String db, String query)
{
using (SqlConnection con = new SqlConnection("Data Source=server.database.windows.net;Initial Catalog=" + db + ";User ID=user@server;Password=password"))
{
con.Open();
using (DataTable dt = new DataTable())
{
try
{
SqlCommand cmd = new SqlCommand(query, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
cmd.Dispose();
da.Dispose();
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
return dt;
}
}
}
【问题讨论】:
-
将 CommandTimeout 设置为 0 意味着“无限”。也许可以试试 600,也就是 10 分钟。 (或对您的问题有意义的东西)。 “无限”是很长一段时间......只是一个建议。
-
@granadaCoder 现在超时为 100,原来问题出在 SQL 数据库上,而不是我的代码!
标签: c# .net sql-server azure sqlconnection