Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

CORRECTIF : un curseur côté serveur peut renvoyer des résultats incorrects

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 286788
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
BUG #: 351513 (Shiloh_bugs)
BOGUE #: 101092 (SQLBUG_70)
Symptômes
Un curseur côté serveur dynamiques ou jeu de clés, peut renvoyer des résultats incorrects si les conditions suivantes sont remplies :
  • La requête utilise une instruction Sub-SELECT sous la forme d'une liste de colonne.
  • Le Sub-SELECT utilise la fonction COUNT(*).
  • Le Sub-SELECT a une jointure ANSI avec une condition.
  • La table de clause de FROM externe a une jointure Transact-SQL avec un Sub-SELECT.
Résolution

SQL Server 2000

Pour résoudre ce problème, procurez-vous le dernier service pack pour SQL Server 2000. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
290211 Fichier INF: Comment faire pour obtenir le dernier Service Pack SQL Server 2000

SQL Server 7.0

Pour résoudre ce problème, procurez-vous le dernier service pack pour Microsoft SQL Server 7.0. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
301511 Fichier INF: Comment faire pour obtenir le dernier Service Pack SQL Server 7.0
Statut
Microsoft a confirmé que c'est un problème dans les produits Microsoft répertoriés au début de cet article.

SQL Server 2000
Ce problème a été corrigé dans SQL Server 2000 Service Pack 1.

SQL Server 7.0
Ce problème a été corrigé dans Microsoft SQL Server 7.0 Service Pack 4.
Plus d'informations
Pour reproduire le problème, exécutez ce code :
CREATE TABLE  TABLE1( T1COL1 int NOT NULL PRIMARY KEY)goCREATE TABLE  TABLE2( T2COL1 int NOT NULL PRIMARY KEY, T2COL2 int NOT NULL )goCREATE TABLE TABLE3(	T3COL1 int NOT NULL)goInsert into TABLE1(T1COL1) values(4)Insert into TABLE1(T1COL1) values(3)Insert into TABLE2(T2COL1, T2COL2) values(5, 3)Insert into TABLE2(T2COL1, T2COL2) values(6, 4)Insert into TABLE3(T3COL1) values(6)go-------------- REPRO SCRIPT (Correct result would be 0,1) -------------declare test cursor keyset for Select (select count(*)      from dbo.TABLE2 as T2 join dbo.TABLE3 as T3 on T3.T3COL1 = T2.T2COL1      where T2.T2COL2 = T1.T1COL1) as Para from dbo.TABLE1 as T1open testfetch testfetch testdeallocate test--------------- Workaround (Join condition moved to WHERE clause) ----------------declare test cursor keyset local for Select (select count(*)      from dbo.TABLE2 as T2, dbo.TABLE3 as T3       where T2.T2COL2 = T1.T1COL1 and T3.T3COL1 = T2.T2COL1) as Para       from dbo.TABLE1 as T1open testfetch testfetch testdeallocate test				
SSrvTran_SQL

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 286788 - Dernière mise à jour : 01/16/2015 21:31:29 - Révision : 3.2

Microsoft SQL Server 2000 Standard, Microsoft SQL Server 7.0 Standard

  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB286788 KbMtfr
Commentaires