CORRECTIF : Une sous-requête avec corrélation sur des vues partitionnées avec des opérations de texte peut provoquer une violation d'accès

Traductions disponibles Traductions disponibles
Numéro d'article: 291274 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F291274
N° DE BOGUE : 352264 (SHILOH_BUGS)
Agrandir tout | Réduire tout

Symptômes

Une violation d'accès peut avoir lieu lors de la sélection à partir de vues partitionnées dans les conditions suivantes :
  • Les vues contiennent au moins une colonne text ou ntext.
  • Une fonction Text est utilisée pour évaluer une colonne text dans la sélection parente.
  • L'option Texte dans la ligne est activée pour au moins une des tables avec une colonne text et est désactivée pour au moins une autre table.
Le journal des erreurs SQL Server peut contenir des entrées similaires à ce qui suit :
CEs::Eval(unsigned long * 0x1af60248, CEsExec * 0x0047004c, CXVariant * 0x115af134) line 778 + 17 bytes
CParamInfo::FUpdate(unsigned long * 0x1af60248) line 130 + 20 bytes
CQScanNLJoin::PpbAddChangedParams(CParamBounds * 0x115af1f4, unsigned long * 0x1af60248, int 0, 
int * 0x115af180) line 933 + 30 bytes
CQScanNLJoin::RecomputeInner(CParamBounds * 0x115af1f4, unsigned long * 0x1af60248) line 995
CQScanNLJoin::GetRow(unsigned long * 0x1af60248, unsigned long * 0x1af60248) line 1269
CQueryScan::GetRow(unsigned long * 0x1af60248, unsigned long * 0x1af60248) line 4273 + 27 bytes
CStmtQuery::ErsqExecuteQuery(CMsqlExecContext * 0x1af60060 {CMsqlExecContext}, 
const CEsComp * 0x1b031e68, const CEsComp * 0x00000000, unsigned long * 0x1af60248, 
int 1, int 0) line 946 + 21 bytes
CStmtSelect::XretExecute(CMsqlExecContext * 0x1af60060 {CMsqlExecContext}) line 3458 + 37 bytes
CMsqlExecContext::ExecuteStmts(ExecutionContext * 0x1aa8d518) line 1483 + 16 bytes
CMsqlExecContext::Execute(CCompPlan * 0x00000000 {CCompPlan}, CParamExchange * 0x00000000) line 1202 + 12 bytes
CSQLSource::Execute(CParamExchange * 0x00000000) line 1246 + 19 bytes
language_exec(srv_proc * 0x1aa90090) line 682
process_commands(srv_proc * 0x1aa90090) line 1704 + 9 bytes
ProcessWorkRequests(UmsWorkQueue * 0x02574b58) line 431 + 13 bytes
ThreadStartRoutine(void * 0x105c1f90) line 263 + 7 bytes
MSVCRT! 
7800bea1()
KERNEL32! 77e92ca8()

Résolution

Pour résoudre ce problème, procurez-vous le dernier Service Pack de SQL Server 2000. Pour plus d'informations, consultez l'article suivant dans la Base de connaissances Microsoft :
290211 INF : Procédures pour obtenir le dernier Service Pack de SQL Server 2000

Statut

Microsoft a confirmé l'existence de ce problème dans SQL Server 2000. Ce problème a été corrigé pour la première fois dans le Service Pack 1 de SQL Server 2000.

Plus d'informations

Vous trouverez ci-dessous un exemple de requête pouvant aboutir à l'erreur présentée plus haut :
SELECT 1
FROM v1
WHERE IntColumn <= ALL
      (
        SELECT v2.IntColumn
         FROM v2
         WHERE SUBSTRING(v1.TextColumn,1,5) < 'a'
      )
où v1 est défini comme suit :
Select * from db1.dbo.t1
UNION ALL
Select * from db2.dbo.t1
v2 est défini comme suit :
Select * from db1.dbo.t2
UNION ALL
Select * from db2.dbo.t2
t1 contient 1 colonne int et 1 colonne text et t2 contient uniquement une colonne int.

Propriétés

Numéro d'article: 291274 - Dernière mise à jour: vendredi 7 novembre 2003 - Version: 4.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Standard
Mots-clés : 
kbbug kbfix kbsqlserv2000bug kbsqlserv2000sp1fix KB291274
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com