ei der Ausführung von @SQL-Abfragen tritt eine Zeitüberschreitung auf, die in SQL Server Management Studio @ schnell auftrit
Ich habe ein C # -Programm, das eine SQL-Abfrage mit dem unten aufgeführten Code ausführt. Ich benutze diesen Code seit einer Weile ohne Probleme bis zum anderen Tag.
Ich übergebe eine Abfragezeichenfolge an SQL, die eine Liste von Zeichenfolgen enthält, bei denen es sich um Bestandskennungen handelt. Vor ein paar Tagen habe ich es ausgeführt und die Abfrage ist abgelaufen. Wenn ich es zulasse, wird es mehr als eine Stunde dauern. Ich habe in den letzten Tagen versucht, dies zu debuggen. In meiner ursprünglichen Abfrage gab es ungefähr 900 Bezeichner.
Ich habe versucht, alles zu ändern, was mir einfällt, und erhalte Ergebnisse, die ich nicht erklären kann.
Beispielsweise
die Abfrage funktioniert mit einer Liste von Beständen, aber nicht mit einer anderen Liste mit der gleichen Länge in Bezug auf die Anzahl der Zeichenfolgen und die Gesamtlänge
it funktioniert mit einer Liste, aber nicht mit derselben Liste in umgekehrter Reihenfolge
mit einer Liste funktioniert es, wenn es genau 900 Bezeichner gibt, aber nicht, wenn es 899 oder 901 gibt, und ich kann verschiedene Bezeichner einschließen oder ausschließen und die gleichen Ergebnisse erzielen, sodass es mit einem der Bezeichner nicht komisch ist.
In jedem dieser Fälle habe ich die Abfragezeichenfolge erfasst, die von meinem Programm übergeben und in SQL Server Management Studio kopiert wird, und in jedem Fall wird die Abfrage in 1 Sekunde ausgeführt.
Ich habe in diesem und in anderen Foren alles Mögliche über Abfragen gelesen, die in SQL Server Management Studio ausgeführt werden. Beim Ausführen eines Programms tritt jedoch eine Zeitüberschreitung auf. Dies scheint jedoch insofern anders zu sein, als ich Fälle finden kann, in denen dies fehlschlägt, und ähnliche Fälle, in denen dies nicht der Fall ist. ' nicht funktionieren.
Ich würde mich über Vorschläge freuen, wo ich nachsehen könnte, was los sein könnte.
using (SqlConnection conn = new SqlConnection(_connectString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(queryString, conn))
{
cmd.Parameters.Clear();
cmd.CommandTimeout = _timeout;
SqlParameter param;
if (parms != null)
{
foreach (string parm in parms.Keys)
{
param = cmd.Parameters.AddWithValue(parm, parms[parm]);
}
}
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
QueryResult record = new QueryResult();
record.Fields = new List<object>();
for (int i = 0; i < returnColumns; ++i)
{
object value = reader.GetValue(i);
if (value == DBNull.Value)
record.Fields.Add(null);
else
record.Fields.Add(value);
}
result.Add(record);
}
reader.Close();
}
conn.Close();
}
Hier ist meine Frage. In dieser Version habe ich 65 Aktien und es funktioniert nicht (<= 64 funktioniert).
select
distinct a.Cusip
, d.Value_ / f.CumAdjFactor as split_adj_val
from qai.prc.PrcScChg a
join qai.dbo.SecMapX b
on a.Code = b.venCode
and b.VenType = 1
and b.exchange = 1
and b.Rank = (select Min(Rank) from qai.dbo.SecMapX where VenCode = a.Code and VenType = 1 and Exchange = 1)
join qai.dbo.SecMapX b2
on b2.seccode = b.seccode
and b2.ventype = 40
and b2.exchange = 1
and b2.Rank = (select Min(Rank) from qai.dbo.SecMapX where SecCode = b.SecCode and VenType = 40 and Exchange = 1)
join qai.dbo.SecMapX b3
on b3.seccode = b.seccode
and b3.ventype = 33
and b3.exchange = 1
and b3.Rank = (select Min(Rank) from qai.dbo.SecMapX where SecCode = b.SecCode and VenType = 33 and Exchange = 1)
join qai.dbo.DXLSecInfo c
on b2.VenCode = c.Code
join qai.dbo.DXLAmData d
on c.Code = d.Code
and d.Date_ = @Date
and d.Item = 6
left JOIN qai.dbo.DS2Adj f
ON f.InfoCode = b3.VenCode
AND f.AdjType = 2
and f.AdjDate <= @Date
and ( f.EndAdjDate >= @Date or f.EndAdjDate is null )
where
a.cusip in ('00101J10', '00105510', '00120410', '00130H10', '00206R10',
'00282410', '00287Y10', '00289620', '00724F10', '00817Y10', '00846U10',
'00915810', '00936310', '00971T10', '01381710', '01535110', '01741R10',
'01849010', '02000210', '02144110', '02209S10', '02313510', '02360810',
'02553710', '02581610', '02687478', '03027X10', '03073E10', '03076C10',
'03110010', '03116210', '03209510', '03251110', '03265410', '03741110',
'03748R10', '03783310', '03822210', '03948310', '04621X10', '05276910',
'05301510', '05329W10', '05333210', '05348410', '05361110', '05430310',
'05493710', '05722410', '05849810', '06050510', '06405810', '06738310',
'07181310', '07373010', '07588710', '07589610', '08143710', '08467070',
'08651610', '09062X10', '09247X10', '09367110', '09702310', '09972410')