FIX: 使用文字作業的資料分割檢視表上的相關子查詢可能會造成存取違規

文章翻譯 文章翻譯
文章編號: 291274 - 檢視此文章適用的產品。
Bug #: 352264 (SHILOH_BUGS)
全部展開 | 全部摺疊

徵狀

當選取從分割檢視表,在下列情況下的,可能就會發生存取違規 (AV):
  • 檢視含有至少一個文字或 ntext 資料行。
  • 文字函數用來評估父系選取的文字資料行。
  • 資料列的文字 是針對具有文字資料行的資料表中至少一個啟用,並且為至少一個其他停用。
SQL Server 錯誤記錄檔可能包含類似下列的項目:
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()
				

解決方案

如果要解決這個問題,取得最新的 Service Pack,SQL Server 2000。如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
290211INF: 如何取得最新的 SQL Server 2000 Service Pack

狀況說明

Microsoft 已確認這是在 SQL Server 2000 中的問題。這個問題已經先在 SQL Server 2000 Service Pack 1 中獲得修正。

其他相關資訊

下列是可能會導致上述錯誤的查詢的範例:
SELECT 1
FROM v1
WHERE IntColumn <= ALL
      (
        SELECT v2.IntColumn
         FROM v2
         WHERE SUBSTRING(v1.TextColumn,1,5) < 'a'
      )
				
v1 定義為:
Select * from db1.dbo.t1
UNION ALL
Select * from db2.dbo.t1
				
v2 定義為:
Select * from db1.dbo.t2
UNION ALL
Select * from db2.dbo.t2
				
t1 包含 1 int 資料行和 1 的文字資料行而 t2 包含只 int 資料行。

屬性

文章編號: 291274 - 上次校閱: 2003年11月5日 - 版次: 3.2
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbmt kbbug kbfix kbsqlserv2000sp1fix KB291274 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:291274
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

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