REVISIÓN: El procedimiento almacenado extendido xp_sendmail no se ejecuta correctamente en SQL Server 2000 SP2 o posterior

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 833045
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Síntomas
Cuando intenta enviar un mensaje de correo electrónico mediante el xp_sendmail procedimiento almacenado extendido en un equipo que se está ejecutando Microsoft SQL Server 2000 Service Pack 2 (SP2) o posterior, el procedimiento almacenado extendido xp_sendmail no funcionen correctamente. Es posible que reciba un mensaje de error parecido al siguiente:
Servidor: Msg 18025, nivel 16, estado 1, línea 0
xp_sendmail: correo error 0 x 80040115
Nota Este problema se produce normalmente cuando las dos condiciones siguientes se cumplen:
  • Hay una pérdida de conectividad de red entre el equipo que ejecuta Microsoft SQL Server 2000 y el equipo que ejecuta Microsoft Exchange Server.
  • El servidor de Exchange se reinicia después de la primera ejecución de la xp_sendmail el procedimiento almacenado en la instancia de SQL Server donde se ha producido el error extendido.
Solución

Información de Service Pack

Para resolver este problema, consiga el Service Pack más reciente para Microsoft SQL Server 2000. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
290211Cómo obtener el Service Pack más reciente de SQL Server 2000

Información de revisiones

La versión en inglés de este hotfix tiene los atributos de archivo (o atributos de último archivo) mostrados en la siguiente tabla. Las fechas y las horas de estos archivos se muestran en hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria de la herramienta fecha y hora en el panel de control.
   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    
Nota Debido a la interdependencia entre archivos, el más reciente revisión o característica que contiene estos archivos quizás contenga también archivos adicionales.

Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:". Este problema se corrigió por primera vez en Pack 4 de Microsoft SQL Server 2000.
Solución
Para evitar este problema, compruebe la conectividad de red y vuelva a enviar el correo. Puede configurar la opción de reintento para el procedimiento almacenado extendido configurando las entradas del registro o al agregar lógica de reintento a su código de aplicación xp_sendmail . Para ello, utilice uno de los métodos siguientes:
  • Método 1: Configurar la opción de reintento para el procedimiento almacenado extendido xp_sendmail

    De forma predeterminada, después de instalar esta revisión, si el xp_sendmail extiende el procedimiento almacenado detecta HRESULT = 0 x 80040115 , el procedimiento almacenado extendido xp_sendmail intenta enviar el correo de nuevo después de que suspende para 1000 milisegundos. Sin embargo, puede configurar el número de reintentos y el intervalo de espera para cada reintento.

    importante Esta sección, el método o la tarea contiene pasos que indican cómo modificar el registro. Sin embargo, pueden producirse problemas graves si modifica incorrectamente el registro. Por tanto, asegúrese de que siga estos pasos cuidadosamente. Realice una para agregar protección, copia de seguridad del registro antes de modificarlo. A continuación, puede restaurar el registro si se produce un problema. Para obtener más información acerca de cómo realizar una copia de seguridad y restaurar el registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    322756Cómo realizar una copia de seguridad y restaurar el registro de Windows
    1. Para configurar el número de reintentos, agregue el valor DWORD NumberOfTimesToRetryOnNetworkError a la siguiente clave del registro y, a continuación, establezca el valor:
      • Para una instancia predeterminada de SQL Server 2000, utilice el HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer clave del registro.
      • Para una instancia con nombre de SQL Server 2000, utilice el HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\ Instance Name \MSSQLServer clave.
    2. Para configurar el intervalo de espera para la opción de reintento de xp_sendmail , agregue el valor DWORD WaitIntervalForRetryOnNetworkError a la siguiente clave del registro y, a continuación, establezca el valor:
      • Para una instancia predeterminada de SQL Server 2000, utilice la clave de registro HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer.
      • Para una instancia con nombre de SQL Server 2000, utilice la clave de registro de \MSSQLServer HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\ Instance Name.
  • Método 2: Agregar Reintentar lógica para el código de aplicación

    Para ello, siga estos pasos:
    1. Compruebe la conectividad red para el equipo está configurado como el servidor de correo.
    2. Asegúrese de que el adaptador de red y el controlador correspondiente funciona correctamente.
    3. Utilizar una lógica apropiada en la secuencia de comandos Transact-SQL que se utiliza para enviar mensajes de correo electrónico utilizando el xp_sendmail procedimiento almacenado extendido para que se puede volver a enviar el mensaje de correo electrónico después de producirse el error. Para ello, puede utilizar una secuencia de comandos Transact-SQL que es similar al siguiente:
      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
Más información
Cuando se envía un mensaje de correo electrónico mediante el xp_sendmail el procedimiento almacenado extendido, el xp_sendmail ampliado procedimiento almacenado realiza muchas llamadas a la API de MAPI. Sin embargo, para una única llamada que causó el error con el siguiente mensaje de error sólo se agrega la opción retry en este hotfix:
HRESULT = 0 X 80040115
Referencias
Para obtener más información acerca de la terminología relativa de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft
Para obtener más información, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
263556Cómo configurar SQL Mail
315886Problemas comunes de SQL Mail
820220se produce un error 0 x 80070005 o 0x80040005 al enviar correo electrónico utilizando el procedimiento almacenado extendido xp_sendmail

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 833045 - Última revisión: 12/08/2015 05:37:16 - Revisión: 4.3

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

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbregistry kbsqlserv2000presp4fix kbfix kbbug kbemail kbdll kbprb kberrmsg kbsqlservmail KB833045 KbMtes
Comentarios