これは私の構成です:
- ウィンドウズ 7 プロ 64b SP1
- Microsoft SQL Server 2014 -
- Microsoft SQL Server Management Studio 12.0.2000.8
- Microsoft .NET フレームワーク 4.5.1 SDK
- マイクロソフト ビジュアル スタジオ 2013 (v12)
次のクエリを実行しようとすると、問題が発生します。
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ですでに見られている同様のケースで与えられたすべてのソリューションを試しましたが(そう思う)、どれもうまくいきませんでした。
問題の原因と考えられる解決策/回避策についての手がかりはありますか?
どうぞよろしくお願いいたします。
ミルコ