CORRECÇÃO: Uma instrução SELECT que contém calculado colunas e valores de condição de filtro inválido podem causar uma violação de acesso

Traduções deste artigo Traduções deste artigo
ID do artigo: 824227 - Exibir os produtos aos quais esse artigo se aplica.
Bug #: 469684 (SQL Server 8.0)
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você executar uma instrução SELECT em uma tabela que contém um ou mais colunas de calculado e a instrução SELECT contém valores de parâmetro inválido para as condições de filtro, pode ocorrer uma violação de acesso.

A instrução SELECT que contém os valores de parâmetro inválido poderá ser executado com êxito se o Microsoft SQL Server 2000 já armazena um plano de execução de consulta que foi gerado usando parâmetros válidos para a mesma instrução SELECT. Se você limpar o cache de procedimento SQL Server e execute novamente a instrução SELECT com valores de parâmetro inválido, o problema poderá ocorrer novamente.

Quando ocorre a violação de acesso, você pode observar um arquivo de despejo de pilha que é semelhante à seguinte:
* *******************************************************************************
*
* BEGIN STACK DUMP: 
* 05/14/03 21:31:23 spid 63 
* 
* Exception Address = 00747D1A (CConvertCtx::PboWithComputedColumnDependencies + 000000E7 Line 0+00000000) 
* Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION 
* Access Violation occurred reading address 00000014

Você também pode perceber um arquivo de despejo de pilha curto que é semelhante à seguinte:

******************************************************************************** 
* ------------------------------------------------------------------------------- 
* Short Stack Dump 
* 00747D1A Module(sqlservr+00347D1A) (CConvertCtx::PboWithComputedColumnDependencies+000000E7)
* 004C2F1D Module(sqlservr+000C2F1D) (CPhyOp_Fetch::PqteConvert+00000452) 
* 0044D9B4 Module(sqlservr+0004D9B4) (COptExpr::PqteConvert+000000BC) 
* 0046C8FC Module(sqlservr+0006C8FC) (CConvertCtx::PqteConvertChild+0000002D) 
* 004797DF Module(sqlservr+000797DF) (CPhyOp_ComputeScalar::PqteConvert+00000043)
* 0044D9B4 Module(sqlservr+0004D9B4) (COptExpr::PqteConvert+000000BC) 
* 0046C8FC Module(sqlservr+0006C8FC) (CConvertCtx::PqteConvertChild+0000002D) 
* 0074EDD8 Module(sqlservr+0034EDD8) (CPhyOp_MergeUnion::PqteConvert+0000004F) 
* 0044D9B4 Module(sqlservr+0004D9B4) (COptExpr::PqteConvert+000000BC) 
* 0046C8FC Module(sqlservr+0006C8FC) (CConvertCtx::PqteConvertChild+0000002D) 
* 004DE5C1 Module(sqlservr+000DE5C1) (CPhyOp_StreamGbAgg::PqteConvert+00000058)
* 0044D9B4 Module(sqlservr+0004D9B4) (COptExpr::PqteConvert+000000BC) 
* 0046C8FC Module(sqlservr+0006C8FC) (CConvertCtx::PqteConvertChild+0000002D) 
* 004797DF Module(sqlservr+000797DF) (CPhyOp_ComputeScalar::PqteConvert+00000043)
* 0044D9B4 Module(sqlservr+0004D9B4) (COptExpr::PqteConvert+000000BC) 
* 0046C8FC Module(sqlservr+0006C8FC) (CConvertCtx::PqteConvertChild+0000002D) 
* 00472235 Module(sqlservr+00072235) (CPhyOp_Top::PqteConvert+000000CE) 
* 0044D9B4 Module(sqlservr+0004D9B4) (COptExpr::PqteConvert+000000BC) 
* 0046C8FC Module(sqlservr+0006C8FC) (CConvertCtx::PqteConvertChild+0000002D) 
* 00472235 Module(sqlservr+00072235) (CPhyOp_Top::PqteConvert+000000CE) 
* 0044D9B4 Module(sqlservr+0004D9B4) (COptExpr::PqteConvert+000000BC) 
* 0046C8FC Module(sqlservr+0006C8FC) (CConvertCtx::PqteConvertChild+0000002D) 
* 00469726 Module(sqlservr+00069726) (CPhyOp_StreamUpdate::PqteConvert+0000293E)
* 0044D9B4 Module(sqlservr+0004D9B4) (COptExpr::PqteConvert+000000BC) 
* 0044D820 Module(sqlservr+0004D820) (COptExpr::PqteConvertTree+00000055) 
* 00458633 Module(sqlservr+00058633) (COptContext::PcxteOptimizeQuery+000011D4)
* 0045775B Module(sqlservr+0005775B) (CQuery::Optimize+000003F9) 
* 00457536 Module(sqlservr+00057536) (CQuery::Optimize+00000030) 
* 00455182 Module(sqlservr+00055182) (CCvtTree::PqryFromTree+0000029D) 
* 00454F30 Module(sqlservr+00054F30) (BuildQueryFromTree+00000046) 
* 00454E9D Module(sqlservr+00054E9D) (CStmtQuery::InitQuery+0000013E) 
* 004632DF Module(sqlservr+000632DF) (CStmtDML::InitNormal+0000011B) 
* 00463225 Module(sqlservr+00063225) (CStmtDML::Init+00000033) 
* 004458F7 Module(sqlservr+000458F7) (CCompPlan::FCompileStep+00000C4C) 
* 0044AB41 Module(sqlservr+0004AB41) (CProchdr::FCompile+00000D23) 
* 0041BF21 Module(sqlservr+0001BF21) (CSQLSource::FTransform+0000034C) 
* 0044CE55 Module(sqlservr+0004CE55) (CSQLStrings::FTransform+000001A1) 
* 0041B8EF Module(sqlservr+0001B8EF) (CSQLSource::Execute+0000015B) 
* 005000B1 Module(sqlservr+001000B1) (ExecuteSql+00000284) 
* 005F15DE Module(sqlservr+001F15DE) (CSpecProc::ExecuteSpecial+00000293) 
* 005F10DD Module(sqlservr+001F10DD) (CXProc::Execute+000000A3) 
* 005F334E Module(sqlservr+001F334E) (CSQLSource::Execute+000003C0) 
* 00438F0B Module(sqlservr+00038F0B) (execrpc+00000507) 
* 0043816D Module(sqlservr+0003816D) (execute_rpc+00000019) 
* 00427001 Module(sqlservr+00027001) (process_commands+00000232) 
* 41075002 Module(UMS+00005002) (ProcessWorkRequests+00000272) 
* 41074698 Module(UMS+00004698) (ThreadStartRoutine+00000098) 
* 7800C9EB Module(MSVCRT+0000C9EB) (beginthread+000000CE) 
* 77E887DD Module(KERNEL32+000087DD) (GetModuleFileNameA+000001D1)

Resolução

Informações sobre o service pack

Para resolver esse problema, obtenha o service pack mais recente para o Microsoft SQL Server 2000. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
290211Como obter o SQL Server 2000 service pack mais recente

Informações sobre o hotfix

A versão em inglês deste hotfix apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
   Date         Time   Version             Size   File name
   -----------------------------------------------------------------------
   31-May-2003  06:15  2000.80.818.0      78,400  Console.exe      
   24-Jun-2003  12:31  2000.80.818.0      33,340  Dbmslpcn.dll     
   24-Apr-2003  13:42                    786,432  Distmdl.ldf
   24-Apr-2003  13:42                  2,359,296  Distmdl.mdf
   29-Jan-2003  13:25                        180  Drop_repl_hotfix.sql
   23-Jun-2003  10:10  2000.80.837.0   1,557,052  Dtsui.dll        
   23-Jun-2003  10:10  2000.80.837.0     639,552  Dtswiz.dll       
   23-Apr-2003  14:21                    747,927  Instdist.sql
   02-May-2003  13:26                      1,581  Inst_repl_hotfix.sql
   07-Feb-2003  18:10  2000.80.765.0      90,692  Msgprox.dll      
   31-Mar-2003  13:37                      1,873  Odsole.sql
   04-Apr-2003  13:16  2000.80.800.0      62,024  Odsole70.dll     
   07-May-2003  08:11  2000.80.819.0      25,144  Opends60.dll     
   02-Apr-2003  09:18  2000.80.796.0      57,904  Osql.exe         
   02-Apr-2003  10:45  2000.80.797.0     279,104  Pfutil80.dll     
   22-May-2003  10:27                     19,195  Qfe469571.sql
   12-Jun-2003  04:07                  1,083,989  Replmerg.sql
   04-Apr-2003  09:23  2000.80.798.0     221,768  Replprov.dll     
   07-Feb-2003  18:10  2000.80.765.0     307,784  Replrec.dll      
   04-May-2003  11:35                  1,085,874  Replsys.sql
   31-May-2003  12:31  2000.80.818.0     492,096  Semobj.dll       
   31-May-2003  05:57  2000.80.818.0     172,032  Semobj.rll
   28-May-2003  11:59                    115,944  Sp3_serv_uni.sql
   31-May-2003  12:31  2000.80.818.0   4,215,360  Sqldmo.dll       
   07-Apr-2003  05:14                     25,172  Sqldumper.exe    
   19-Mar-2003  05:50  2000.80.789.0      28,672  Sqlevn70.rll
   01-Jul-2003  11:48  2000.80.834.0     180,736  Sqlmap70.dll     
   07-Feb-2003  18:10  2000.80.765.0      57,920  Sqlrepss.dll     
   23-Jun-2003  10:10  2000.80.837.0   7,553,105  Sqlservr.exe     
   07-Feb-2003  18:10  2000.80.765.0      45,644  Sqlvdi.dll       
   24-Jun-2003  12:31  2000.80.818.0      33,340  Ssmslpcn.dll     
   31-May-2003  12:31  2000.80.818.0      82,492  Ssnetlib.dll     
   31-May-2003  12:31  2000.80.818.0      25,148  Ssnmpn70.dll     
   31-May-2003  12:31  2000.80.818.0     158,240  Svrnetcn.dll     
   31-May-2003  06:29  2000.80.818.0      76,416  Svrnetcn.exe     
   30-Apr-2003  11:22  2000.80.816.0      45,132  Ums.dll          
   01-Jul-2003  11:49  2000.80.834.0      98,816  Xpweb70.dll      
Observação Devido às dependências do arquivo, o hotfix mais recente ou o recurso que contém esses arquivos também pode conter arquivos adicionais.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft que estão listados na seção "Aplica-se a" deste artigo.Esse problema foi corrigido primeiro no Microsoft SQL Server 2000 Service Pack 4.

Referências

Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software

Propriedades

ID do artigo: 824227 - Última revisão: sexta-feira, 2 de novembro de 2007 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Palavras-chave: 
kbmt kbhotfixserver kbqfe kbquery kbtsql kbsqlserv2000presp4fix kbfix kbbug KB824227 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 824227

Submeter comentários

 

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