Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Existe-t-il un bogue dans SqlDataReader.HasRows lors de l'exécution sur SQL Server 2008 ?

Je suis l'affiche originale de la question référencée (connexion perdue) et je n'ai jamais réussi à la comprendre. En fin de compte, je l'ai attribué au mauvais vaudou, j'ai sacrifié la propreté et j'ai opté pour quelque chose comme

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

Ce qui était vraiment bizarre, c'est que cela fonctionnait dans une page aspx et pas dans une autre malgré que les blocs de code soient presque identiques sauf la procédure stockée utilisée.

Inutile de dire que j'évite désormais .HasRows;)

MODIFIER - Management Studio affiche également des messages dans l'onglet messages de la procédure de problème dans mon projet. Cela semble donc être la cause du problème. Mais pourquoi cela ferait-il chier .HasRows ? ?

EDIT2 - Confirmé, modifié la requête pour éviter les messages d'avertissement et .hasrows est maintenant vrai.