我在Azure SQL Server上跨多个数据库运行查询时遇到问题。这是我在执行后从查询中返回DataTable的功能。该函数将数据库名称作为字符串,并将其与要执行的查询一起插入到conenction字符串中。
当我运行一次时,该函数正常工作,返回按预期填充返回行的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;
}
}
}
答案 0 :(得分:0)
我认为您应该尝试在foreach块中添加System.Threading.Thread.Sleep
。
答案 1 :(得分:0)
添加cmd.CommandTimeout = 0
try
{
SqlCommand cmd = new SqlCommand(query, con);
cmd.CommandTimeout = 0;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dtt);
cmd.Dispose();
da.Dispose();
}