C# ADO.net中的查询超时,但它在SQL Server Mgmt Studio中工作
这是我的配置: Windows 7 Pro 64b SP1 Microsoft SQL Server 2014- Microsoft SQL Server Management Studio 12.0.2000.8 Microsoft.NET Framewrok 4.5.1 SDK Microsoft Visual Studio 2013 v12 尝试运行以下查询时遇到问题:C# ADO.net中的查询超时,但它在SQL Server Mgmt Studio中工作,c#,ado.net,timeout,sql-server-2014,ssms-2014,C#,Ado.net,Timeout,Sql Server 2014,Ssms 2014,这是我的配置: Windows 7 Pro 64b SP1 Microsoft SQL Server 2014- Microsoft SQL Server Management Studio 12.0.2000.8 Microsoft.NET Framewrok 4.5.1 SDK Microsoft Visual Studio 2013 v12 尝试运行以下查询时遇到问题: declare @date datetime set @date='9/12/2014 15:58:06’ S
declare @date datetime
set @date='9/12/2014 15:58:06’
SELECT TOP 1000 Articolo1.id as 'Articolo1.id' , Articolo1.nome as 'Articolo1.nome'
FROM Articolo as Articolo1 WITH (NOLOCK)
WHERE ((Articolo1.dataUltimaModifica >= @date))
AND NOT EXISTS (
SELECT [TabPagExt].[TabPag_Id] AS [TabPag_Id]
FROM ( SELECT TOP 1000 Articolo1_PAG.[Id] AS [TabPag_Id]
FROM Articolo as Articolo1_PAG WITH (NOLOCK)
WHERE ((Articolo1_PAG.dataUltimaModifica >= @date))
ORDER BY Articolo1_PAG.dataUltimaModifica ASC
) AS [TabPagExt] WHERE Articolo1.[Id] = [TabPagExt].[TabPag_Id]
)
ORDER BY Articolo1.dataUltimaModifica ASC
如果我在SSMS SQL Server Management Studio中启动它,它将毫无问题地运行,但当我在ADO.net中尝试它时,它会抛出一个错误:
System.Data.SqlClient.SqlException:超时
两者都是针对同一机器和连接中的生产服务器启动的
以下是源代码:
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Server=mypc\sqlpass2014;Database=myDB;User Id=id;Password=pass;");
SqlCommand command = new SqlCommand();
command.CommandTimeout = 150;
command.Connection = conn;
conn.Open();
//command.CommandText = "SET ARITHABORT ON ";
//command.ExecuteNonQuery();
command.CommandText = "SELECT TOP 1000 Articolo1.id as 'Articolo1.id' , Articolo1.nome as 'Articolo1.nome' FROM Articolo as Articolo1 WITH (NOLOCK) WHERE ((Articolo1.dataUltimaModifica >= @Articolo1_dataUltimaModificaxxxxx0)) AND NOT EXISTS (SELECT [TabPagExt].[TabPag_Id] AS [TabPag_Id] FROM ( SELECT TOP 1000 Articolo1_PAG.[Id] AS [TabPag_Id] FROM Articolo as Articolo1_PAG WITH (NOLOCK) WHERE ((Articolo1_PAG.dataUltimaModifica >= @Articolo1_dataUltimaModificaxxxxx0)) ORDER BY Articolo1_PAG.dataUltimaModifica ASC ) AS [TabPagExt] WHERE Articolo1.[Id] = [TabPagExt].[TabPag_Id]) ORDER BY Articolo1.dataUltimaModifica ASC ";
command.Parameters.Add(new SqlParameter("@Articolo1_dataUltimaModificaxxxxx0", new DateTime(2014, 12, 9, 15, 58, 06)));
try
{
SqlDataReader reader = command.ExecuteReader();
int rows = 0;
try
{
while (reader.Read())
rows++;
}
finally
{
reader.Close();
}
MessageBox.Show("Rows read: " + rows.ToString());
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
finally
{
conn.Close();
}
}
我已经尝试过在StackOverflow中看到的类似案例中给出的所有解决方案,但没有一个对我有效
关于问题的来源和可能的解决方案/解决方法有什么线索吗
提前感谢大家的帮助
Mirco在SSMS中运行需要多长时间。ADO.net连接将超时我认为默认值是30秒,但它可以调整,而management studio中的查询只会运行到完成。嗨,这不是一个可调整超时的连接,我的意思是,重要的是,我一直尝试到150、180甚至210秒,但没有任何更改。在SSMS中,大约需要50秒才能完成。