Недавно у меня была очень странная проблема .Приложение написано на классическом ASP, но я полагаю, что это тот же случай для каждого соединения, использующего ADO / OLEDB.
Это параметры соединения.
conn=Server.CreateObject("ADODB.Connection");
conn.Provider="Microsoft.Jet.OLEDB.4.0";
conn.Open("D:/db/testingDb.mdb");
Короче говоря, этот код:
conn.Open("myconnection");
bigQuery = "...";
rs = conn.execute(bigQuery);
while (!rs.eof) {
...
smallQuery = "..."
rssmall = conn.execute(smallQuery);
...
rssmall.close();
...
rs.movenext();
}
rs.close();
conn.close();
Не работает, если bigQuery возвращает более определенного количества строк (в моем случае ~ 20).Но если я использую еще одно соединение для внутреннего цикла, как предложил stealthyninja:
conn.Open("myconnection");
conn2.Open("myconnection")
bigQuery = "...";
rs = conn.execute(bigQuery);
while (!rs.eof) {
...
smallQuery = "..."
rssmall = conn2.execute(smallQuery);
...
rssmall.close();
...
rs.movenext();
}
rs.close();
conn2.close();
conn.close();
Проблема исчезает.
Я использую базу данных Access и IIS7, если это имеет значение.
У кого-нибудь есть логическое объяснение этому?