CORRECÇÃO: O xp_sendmail procedimento armazenado estendido não executa com êxito no SQL Server 2000 SP2 ou posterior

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: 833045
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Quando você tenta enviar uma mensagem de email usando xp_sendmail estendido procedimento armazenado em um computador que está executando o Microsoft SQL Server 2000 Service Pack 2 (SP2) ou posterior, xp_sendmail procedimento armazenado estendido não pode executar com êxito. Você receberá a seguinte mensagem de erro:
Servidor: Mensagem 18025, nível 16, estado 1, linha 0
xp_sendmail: falhou com erro de email 0x80040115
Observação Esse problema normalmente ocorre quando as duas condições seguintes forem verdadeiras:
  • Há uma perda de conectividade de rede entre o computador está executando o Microsoft SQL Server 2000 e o computador que executam o Microsoft Exchange Server.
  • O servidor do Exchange é reiniciado após a primeira execução de xp_sendmail procedimento armazenado na instância do SQL Server onde ocorreu o erro estendido.
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 mais informações, 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 tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas no horário de universal coordenado (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  18:45  2000.80.818.0      78,400  Console.exe         28-Oct-2003  04:21  2000.80.873.0     315,968  Custtask.dll        30-Jan-2004  16:29  2000.80.911.0      33,340  Dbmslpcn.dll        25-Apr-2003  02:12                    786,432  Distmdl.ldf   25-Apr-2003  02:12                  2,359,296  Distmdl.mdf   30-Jan-2003  01:55                        180  Drop_repl_hotfix.sql   12-Sep-2003  03:26  2000.80.859.0   1,905,216  Dtspkg.dll          26-Aug-2003  20:16  2000.80.854.0     528,960  Dtspump.dll         23-Jun-2003  22:40  2000.80.837.0   1,557,052  Dtsui.dll           23-Jun-2003  22:40  2000.80.837.0     639,552  Dtswiz.dll          24-Apr-2003  02:51                    747,927  Instdist.sql   03-May-2003  01:56                      1,581  Inst_repl_hotfix.sql   30-Jan-2004  16:29  2000.80.911.0      90,692  Msgprox.dll         01-Apr-2003  02:07                      1,873  Odsole.sql   30-Jan-2004  16:29  2000.80.911.0      62,024  Odsole70.dll        30-Jan-2004  16:29  2000.80.911.0      25,144  Opends60.dll        07-May-2003  18:47                    132,096  Opends60.pdb   30-Jan-2004  16:28  2000.80.911.0      57,904  Osql.exe            02-Apr-2003  23:15  2000.80.797.0     279,104  Pfutil80.dll        04-Aug-2003  18:17                    550,780  Procsyst.sql   12-Sep-2003  00:37                     12,305  Qfe469315.sql   22-May-2003  22:57                     19,195  Qfe469571.sql   30-Jan-2004  01:16                  1,090,380  Replmerg.sql   30-Jan-2004  16:29  2000.80.911.0     221,768  Replprov.dll        30-Jan-2004  16:29  2000.80.911.0     307,784  Replrec.dll         29-Jan-2004  23:24  2000.80.911.0     159,813  Replres.rll   06-Sep-2003  00:00                  1,087,150  Replsys.sql   13-Aug-2003  16:28                    986,603  Repltran.sql   30-Jan-2004  16:29  2000.80.911.0     287,304  Rinitcom.dll        30-Jan-2004  16:29  2000.80.911.0      57,916  Semnt.dll           29-Jul-2003  20:13  2000.80.819.0     492,096  Semobj.dll          31-May-2003  18:27  2000.80.818.0     172,032  Semobj.rll   02-Jan-2004  19:42  2000.80.904.0      53,832  Snapshot.exe        09-Dec-2003  20:07                    117,834  Sp3_serv_uni.sql   05-Feb-2004  00:46  2000.80.913.0      28,672  Sqlagent.dll        05-Feb-2004  00:47  2000.80.913.0     311,872  Sqlagent.exe        19-Feb-2004  18:02  2000.80.916.0     168,001  Sqlakw32.dll        30-Jan-2004  16:29  2000.80.911.0   4,215,360  Sqldmo.dll          07-Apr-2003  17:44                     25,172  Sqldumper.exe       29-Jan-2004  23:17  2000.80.911.0      28,672  Sqlevn70.rll   05-Mar-2004  17:13  2000.80.922.0     180,792  Sqlmap70.dll        03-Sep-2003  02:56  2000.80.857.0     188,992  Sqlmmc.dll          02-Sep-2003  23:03  2000.80.857.0     479,232  Sqlmmc.rll   22-Oct-2003  00:08  2000.80.871.0     401,984  Sqlqry.dll          30-Jan-2004  16:29  2000.80.911.0      57,920  Sqlrepss.dll        09-Mar-2004  19:54  2000.80.922.0   7,614,545  Sqlservr.exe        09-Mar-2004  19:57                 12,788,736  Sqlservr.pdb   30-Jan-2004  16:29  2000.80.911.0     590,396  Sqlsort.dll         30-Jan-2004  16:29  2000.80.911.0      45,644  Sqlvdi.dll          30-Jan-2004  16:29  2000.80.911.0     106,588  Sqsrvres.dll        30-Jan-2004  16:29  2000.80.911.0      33,340  Ssmslpcn.dll        30-Jan-2004  16:29  2000.80.911.0      82,492  Ssnetlib.dll        30-Jan-2004  16:29  2000.80.911.0      25,148  Ssnmpn70.dll        28-Oct-2003  04:21  2000.80.873.0     123,456  Stardds.dll         30-Jan-2004  16:29  2000.80.911.0     158,240  Svrnetcn.dll        30-Jan-2004  16:29  2000.80.911.0      76,416  Svrnetcn.exe        30-Apr-2003  23:52  2000.80.816.0      45,132  Ums.dll             30-Apr-2003  23:52                    132,096  Ums.pdb   30-Jan-2004  16:29  2000.80.911.0      98,872  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 listados na seção "Aplica-se a". Esse problema foi corrigido primeiro no Microsoft SQL Server 2000 Service Pack 4.
Como Contornar
Para contornar esse problema, verifique se a conectividade de rede e, em seguida, reenvie a mensagem. Você pode configurar a opção de repetição para xp_sendmail procedimento armazenado estendido configurando as entradas do registro ou adicionando lógica de repetição a seu código de aplicativo. Para fazer isso, use um dos seguintes métodos:
  • Método 1: Configurar a opção de repetição para xp_sendmail procedimento armazenado estendido

    Por padrão, depois de instalar essa correção, se xp_sendmail estendido procedimento armazenado encontrar HRESULT = 0x80040115 , xp_sendmail procedimento armazenado estendido tenta enviar o email novamente depois que ele dorme para 1000 milissegundos. No entanto, você pode configurar o número de tentativas e o intervalo de espera para cada tentativa.

    importante Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer se você modificar o registro incorretamente. Por isso, certifique-se que você execute essas etapas cuidadosamente. Para proteção adicional, fazer backup do registro antes de modificá-lo. Em seguida, você pode restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    322756Como fazer backup e restaurar o registro no Windows
    1. Para configurar o número de tentativas, adicione o valor DWORD NumberOfTimesToRetryOnNetworkError para a seguinte chave do Registro e, em seguida, defina o valor:
      • Para uma instância padrão do SQL Server 2000, utilize o HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer chave do Registro.
      • Para uma instância nomeada do SQL Server 2000, use o HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL servidor\ Instance Name \MSSQLServer chave.
    2. Para configurar o intervalo de espera para a opção de repetição xp_sendmail , adicione o valor DWORD WaitIntervalForRetryOnNetworkError para a seguinte chave do Registro e, em seguida, defina o valor:
      • Para uma instância padrão do SQL Server 2000, utilize a chave de registro HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer.
      • Para uma instância nomeada do SQL Server 2000, use a chave de registro de \MSSQLServer HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL servidor\ Instance Name.
  • Método 2: Adicionar novamente a lógica para seu código de aplicativo

    Para fazer isso, execute estas etapas:
    1. Verificar a conectividade rede para o computador que esteja configurado como servidor de email.
    2. Certifique-se que o adaptador de rede e o driver correspondente estão funcionando corretamente.
    3. Use uma lógica apropriada no script do Transact-SQL que usam para enviar mensagens de email usando xp_sendmail procedimento armazenado estendido para que a mensagem de email pode ser enviada novamente após a falha. Para fazer isso, você pode usar um script Transact-SQL que é semelhante à seguinte:
      DECLARE@EmailAddTO varchar(30),@EmailSubject varchar(130),@EmailText varchar(255),@return int,@Counting int BEGIN/* SET value */SET @return = 0 SET @Counting = 0 SET @EmailSubject = 'TEST EMAIL' SET @EmailText = 'This is a test email'SET @EmailAddTO = '<RecipientAddress>' /* LOOP. If e-mail is sent, break loop; ELSE WAIT 10 seconds, and then RETRY. */WHILE 1=1BEGINSET @Counting = @Counting + 1EXEC @return = master.dbo.xp_sendmail @recipients = @EmailAddTO,@message = @EmailText ,@subject = @EmailSubject/* CHECK value, break if SUCCESS */IF @return = 0BEGINPRINT 'EMAIL SENT'BREAKENDELSEBEGIN/* Try 5 times */IF @Counting = 5BREAK PRINT 'EMAIL FAILED, WAIT 10 SECONDS, TRY AGAIN'/* 000 hours, 00 minutes, and 10 seconds */WAITFOR DELAY '000:00:10'ENDENDENDGO
Mais Informações
Quando você envia uma mensagem de email usando xp_sendmail procedimento armazenado estendido, xp_sendmail estendido procedimento armazenado faz muitas chamadas para a API de MAPI. No entanto, a opção de repetição nesse hotfix é adicionada apenas para uma única chamada que causou a falha com a seguinte mensagem de erro:
HRESULT = 0X80040115
Referências
Para obter mais informações sobre terminologia de atualização de software, 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
Para obter mais informações, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
263556Como configurar o SQL Mail
315886Problemas comuns do SQL Mail
820220Erro 0 x 80070005 ou 0x80040005 ocorre quando você envia um email usando xp_sendmail procedimento armazenado estendido

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 833045 - Última Revisão: 12/08/2015 05:37:21 - Revisão: 4.3

Microsoft SQL Server 2000 Desktop Engine (MSDE) SP2, Microsoft SQL Server 2000 Desktop Engine (MSDE) SP3, Microsoft SQL Server 2000 Service Pack 2, Microsoft SQL Server 2000 Service Pack 3, Microsoft SQL Server 2000 Service Pack 2, Microsoft SQL Server 2000 Service Pack 3, Microsoft SQL Server 2000 Service Pack 2, Microsoft SQL Server 2000 Personal Edition Service Pack 3, Microsoft SQL Server 2000 Service Pack 2, Microsoft SQL Server 2000 Service Pack 3

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbregistry kbsqlserv2000presp4fix kbfix kbbug kbemail kbdll kbprb kberrmsg kbsqlservmail KB833045 KbMtpt
Comentários