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

Ancien nº de publication de cet article : F291274
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
N° DE BOGUE : 352264 (SHILOH_BUGS)
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 bytesCParamInfo::FUpdate(unsigned long * 0x1af60248) line 130 + 20 bytesCQScanNLJoin::PpbAddChangedParams(CParamBounds * 0x115af1f4, unsigned long * 0x1af60248, int 0, int * 0x115af180) line 933 + 30 bytesCQScanNLJoin::RecomputeInner(CParamBounds * 0x115af1f4, unsigned long * 0x1af60248) line 995CQScanNLJoin::GetRow(unsigned long * 0x1af60248, unsigned long * 0x1af60248) line 1269CQueryScan::GetRow(unsigned long * 0x1af60248, unsigned long * 0x1af60248) line 4273 + 27 bytesCStmtQuery::ErsqExecuteQuery(CMsqlExecContext * 0x1af60060 {CMsqlExecContext}, const CEsComp * 0x1b031e68, const CEsComp * 0x00000000, unsigned long * 0x1af60248, int 1, int 0) line 946 + 21 bytesCStmtSelect::XretExecute(CMsqlExecContext * 0x1af60060 {CMsqlExecContext}) line 3458 + 37 bytesCMsqlExecContext::ExecuteStmts(ExecutionContext * 0x1aa8d518) line 1483 + 16 bytesCMsqlExecContext::Execute(CCompPlan * 0x00000000 {CCompPlan}, CParamExchange * 0x00000000) line 1202 + 12 bytesCSQLSource::Execute(CParamExchange * 0x00000000) line 1246 + 19 byteslanguage_exec(srv_proc * 0x1aa90090) line 682process_commands(srv_proc * 0x1aa90090) line 1704 + 9 bytesProcessWorkRequests(UmsWorkQueue * 0x02574b58) line 431 + 13 bytesThreadStartRoutine(void * 0x105c1f90) line 263 + 7 bytesMSVCRT! 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 1FROM v1WHERE 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.t1UNION ALLSelect * from db2.dbo.t1
v2 est défini comme suit :
Select * from db1.dbo.t2UNION ALLSelect * from db2.dbo.t2
t1 contient 1 colonne int et 1 colonne text et t2 contient uniquement une colonne int.
Propriétés

ID d'article : 291274 - Dernière mise à jour : 01/16/2015 21:52:12 - Révision : 4.1

  • Microsoft SQL Server 2000 Standard
  • kbnosurvey kbarchive kbbug kbfix kbsqlserv2000bug kbsqlserv2000sp1fix KB291274
Commentaires