CORRECÇÃO: Utilização xp_sendmail com um COMPUTE cláusula provoca uma violação de acesso

Traduções de Artigos Traduções de Artigos
Artigo: 819955 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
N.º DE BUGS: 469145 (SHILOH_BUGS)
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Uma chamada para xp_sendmail expandido o procedimento armazenado poderá causar uma violação de acesso Proces quando são satisfeitas as seguintes condições:
  • A chamada xp_sendmail tem de utilizar @ consulta parâmetro para enviar um conjunto de registos.
  • A consulta passado para a consulta @ parâmetro tem de incluir uma cláusula COMPUTE.
  • A consulta tem de devolver não linhas.
Eis um exemplo de uma consulta que poderá detectar este problema:
 EXEC master..xp_sendmail 
 @recipients = 'recipient_email_address',
 @message = 'Total Sum of Job ID' ,
 @subject = 'Compute Sum',
 @width = 133 ,
 @query = 'SELECT emp_id, fname, minit, lname, job_id, job_lvl, pub_id FROM pubs.dbo.employee WHERE 1=0 COMPUTE SUM (job_id)'
NOTA: este problema é uma regressão que afecta apenas um pequeno número de pós-SQL Server 2000 Service Pack 3 hotfix versões. Este problema só se aplica a computadores servidores que executem versões de correcção do SQL Server 2000 entre compilação 780 e 807 (inclusive). Verifique a versão do ficheiro Sqlmap70.dll que está na pasta BINN da instância do SQL Server para determinar se a instância é afectada. A versão do ficheiro afectado tem os seguintes atributos:
   Date         Time   Version        Size           File name
   --------------------------------------------------------------
   28-Feb-2003  01:34  2000.80.778.0  176,696 bytes  Sqlmap70.dll
				

Resolução

Informações sobre Service Packs

Para resolver este problema, obtenha o service pack mais recente do Microsoft SQL Server 2000. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
290211Como obter o SQL Server 2000 service pack mais recente

Informações sobre a correcção

Nota Esta correcção (compilação 811) só pode ser aplicada para o SQL Server 2000 Service Pack 3.

A versão inglesa desta correcção tem os atributos de ficheiro (ou posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas no formato de universal hora (UTC) coordenada Coordinated. Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário na ferramenta Data e hora no painel de controlo.
   Date         Time   Version         Size             File name
   -------------------------------------------------------------------------------
   26-Feb-2003  03:41  2000.80.777.0      29,244 bytes  Dbmslpcn.dll     
   08-Feb-2003  05:43                    786,432 bytes  Distmdl.ldf
   08-Feb-2003  05:43                  2,359,296 bytes  Distmdl.mdf
   30-Jan-2003  01:55                        180 bytes  Drop_repl_hotfix.sql
   07-Apr-2003  19:15  2000.80.801.0   1,557,052 bytes  Dtsui.dll        
   24-Apr-2003  02:51                    747,927 bytes  Instdist.sql
   30-Jan-2003  01:55                      1,402 bytes  Inst_repl_hotfix.sql
   08-Feb-2003  06:40  2000.80.765.0      90,692 bytes  Msgprox.dll      
   01-Apr-2003  02:07                      1,873 bytes  Odsole.sql
   05-Apr-2003  01:46  2000.80.800.0      62,024 bytes  Odsole70.dll     
   02-Apr-2003  21:48  2000.80.796.0      57,904 bytes  Osql.exe         
   02-Apr-2003  23:15  2000.80.797.0     279,104 bytes  Pfutil80.dll     
   04-Apr-2003  21:27                  1,083,467 bytes  Replmerg.sql
   04-Apr-2003  21:53  2000.80.798.0     221,768 bytes  Replprov.dll     
   08-Feb-2003  06:40  2000.80.765.0     307,784 bytes  Replrec.dll      
   01-Apr-2003  02:23                  1,084,828 bytes  Replsys.sql
   16-Apr-2003  22:39                    115,892 bytes  Sp3_serv_uni.sql
   07-Apr-2003  17:44                     25,172 bytes  Sqldumper.exe    
   19-Mar-2003  18:20  2000.80.789.0      28,672 bytes  Sqlevn70.rll
   24-Apr-2003  05:39  2000.80.811.0     176,696 bytes  Sqlmap70.dll     
   08-Feb-2003  06:40  2000.80.765.0      57,920 bytes  Sqlrepss.dll     
   24-Apr-2003  05:39  2000.80.811.0   7,540,817 bytes  Sqlservr.exe     
   08-Feb-2003  06:40  2000.80.765.0      45,644 bytes  Sqlvdi.dll       
   26-Feb-2003  03:41  2000.80.777.0      29,244 bytes  Ssmslpcn.dll     
   26-Feb-2003  03:41  2000.80.777.0      82,492 bytes  Ssnetlib.dll     
   28-Feb-2003  01:34  2000.80.778.0      98,872 bytes  Xpweb70.dll
Nota devido de dependências de ficheiros, a correcção mais recente ou funcionalidade que contém os ficheiros também poderão conter ficheiros adicionais.

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo. Este problema foi corrigido pela primeira vez no Microsoft SQL Server 2000 Service Pack 4.

Como contornar

Para contornar o problema pode modificar a consulta para que só efectua um COMPUTE quando existem linhas a serem devolvidos. Por exemplo, pode modificar a consulta na secção "Sintomas" do seguinte modo para evitar o problema:
EXEC master..xp_sendmail 
 @recipients = 'recipient_email_address',
 @message = 'Total Sum of Job ID' ,
 @subject = 'Compute Sum',
 @width = 133 ,
 @query = 'IF EXISTS (SELECT 1  FROM pubs.dbo.employee WHERE 1=0)  SELECT emp_id, fname, minit, lname, job_id, job_lvl, pub_id FROM pubs.dbo.employee WHERE 1=0 COMPUTE SUM (job_id) ELSE SELECT ''No Data'' as [SUM]'

Propriedades

Artigo: 819955 - Última revisão: 24 de fevereiro de 2014 - Revisão: 9.4
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: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbqfe kbsqlserv2000presp4fix kbfix kbbug KB819955 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 819955

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