Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Gibt es einen Fehler in SqlDataReader.HasRows bei der Ausführung gegen SQL Server 2008?

Ich bin der ursprüngliche Verfasser der verwiesenen Frage (Login verloren) und habe es nie geschafft, es herauszufinden. Am Ende führte ich es auf schlechten Voodoo, opferte die Sauberkeit und entschied mich für so etwas wie

bool readerHasRows=false;
while(reader.reader())
{
   readerHasRows=true;
   doStuffOverAndOver();
}
if (!readerHasRows)
{
   probablyBetterShowAnErrorMessageThen();
}

Was wirklich seltsam war, war, dass es auf einer Aspx-Seite funktionierte und nicht auf einer anderen, obwohl die Codeblöcke fast identisch mit der verwendeten gespeicherten Prozedur waren.

Unnötig zu erwähnen, dass ich .HasRows von nun an meide;)

BEARBEITEN - Management Studio zeigt auch in meinem Projekt Meldungen auf der Registerkarte "Meldungen" zum Problemverfahren an. Das scheint also die Ursache des Problems zu sein. Aber warum sollte es .HasRows vermasseln??

BEARBEITEN2 - Bestätigt, die Abfrage geändert, um die Warnmeldungen zu vermeiden, und .hasrows ist jetzt wahr.