FIX: Stored procedure estesa di xp_sendmail non viene eseguito correttamente in SQL Server 2000 SP2 o versioni successive

Traduzione articoli Traduzione articoli
Identificativo articolo: 833045 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando si tenta di inviare un messaggio di posta elettronica utilizzando la stored procedure xp_sendmail stored procedure estesa su un computer che esegue Microsoft SQL Server 2000 Service Pack 2 (SP2) o versioni successive, la stored procedure estesa xp_sendmail non pu˛ essere eseguito correttamente. ╚ possibile che venga visualizzato un messaggio di errore analogo al seguente:
Server: Messaggio 18025, livello 16, stato 1, riga 0
xp_sendmail: non riuscita con errore di posta elettronica 0x80040115
Nota Questo problema si verifica in genere in presenza di due condizioni seguenti:
  • ╚ una perdita di connettivitÓ di rete tra il computer che esegue Microsoft SQL Server 2000 e il computer che eseguono Microsoft Exchange Server.
  • Il server di Exchange viene riavviato dopo la prima esecuzione della stored procedure xp_sendmail esteso stored procedure sull'istanza di SQL Server in cui si Ŕ verificato l'errore.

Risoluzione

Informazioni sul Service pack

Per risolvere il problema, ottenere il service pack pi¨ recente per Microsoft SQL Server 2000. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
290211Come ottenere il service pack pi¨ recente per SQL Server 2000

Informazioni sull'hotfix

La versione di lingua inglese di questo aggiornamento rapido (hotfix) presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Le date e le ore per questi file sono indicati in UTC (Coordinated Universal Time). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello strumento Data e ora del Pannello di controllo.
   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 A causa delle dipendenze fra i file, la funzionalitÓ che contiene i file o l'aggiornamento rapido (hotfix) pi¨ recente pu˛ contenere anche ulteriori file.

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a". Questo problema Ŕ stato innanzitutto corretto in SQL Server 2000 Service Pack 4.

Workaround

Per risolvere questo problema, verificare la connettivitÓ di rete e quindi inviare di nuovo la posta. ╚ possibile impostare l'opzione di tentativi per la stored procedure estesa configurando le voci del Registro di sistema o aggiungendo il codice dell'applicazione logica riprova xp_sendmail . Per effettuare questa operazione, utilizzare uno dei metodi descritti di seguito:
  • Metodo 1: Configurare l'opzione di tentativi per la stored procedure estesa xp_sendmail

    Per impostazione predefinita, dopo avere installato questa correzione, se la stored procedure xp_sendmail extended stored procedure rileva HRESULT = 0x80040115 , la stored procedure estesa xp_sendmail tenta di inviare nuovamente il messaggio dopo che inattivo per 1000 millisecondi. Tuttavia, Ŕ possibile configurare il numero di tentativi e l'intervallo di attesa per ogni tentativo.

    importante Questa sezione, metodo o l'attivitÓ sono contenute procedure viene illustrato come modificare il Registro di sistema. Tuttavia, possono causare seri problemi se si modifica il Registro di sistema in modo errato. Pertanto, assicurarsi che questa procedura con attenzione. Per maggiore protezione, Ŕ eseguire il backup del Registro di sistema prima di modificarlo. ╚ quindi possibile ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni su come eseguire il backup e ripristino del Registro di sistema, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
    322756Come eseguire il backup e il ripristino del Registro di sistema in Windows
    1. Per configurare il numero di tentativi, aggiungere il valore DWORD NumberOfTimesToRetryOnNetworkError la seguente chiave del Registro di sistema e quindi impostare il valore:
      • Per un'istanza predefinita di SQL Server 2000, utilizzare il HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer chiave del Registro di sistema.
      • Per un'istanza denominata di SQL Server 2000, utilizzare il HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\ Instance Name \MSSQLServer chiave di registro.
    2. Per configurare l'intervallo di attesa per l'opzione di tentativi di xp_sendmail , aggiungere il valore DWORD WaitIntervalForRetryOnNetworkError la seguente chiave del Registro di sistema e quindi impostare il valore:
      • Per un'istanza predefinita di SQL Server 2000, utilizzare la chiave di registro di sistema di HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer.
      • Per un'istanza denominata di SQL Server 2000, premere HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\ Instance Name \MSSQLServer del Registro di sistema.
  • Metodo 2: Aggiungere riprovare logica al codice dell'applicazione

    Per effettuare questa operazione, attenersi alla seguente procedura:
    1. Verificare la la connettivitÓ di rete per il computer Ŕ configurato come server di posta elettronica.
    2. Assicurarsi che la scheda di rete e il corrispondente driver funzioni correttamente.
    3. Utilizzare una logica appropriata nello script Transact-SQL che consente di inviare messaggi di posta elettronica utilizzando la stored procedure xp_sendmail stored procedure estesa in modo che il messaggio di posta elettronica pu˛ essere inviato nuovamente dopo l'errore. Per effettuare questa operazione, Ŕ possibile utilizzare uno script Transact-SQL analogo al seguente:
      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=1
      BEGIN
      SET @Counting = @Counting + 1
      
      EXEC @return = master.dbo.xp_sendmail 
      @recipients = @EmailAddTO,
      @message = @EmailText ,
      @subject = @EmailSubject
      
      /* CHECK value, break if SUCCESS */
      IF @return = 0
      BEGIN
      PRINT 'EMAIL SENT'
      BREAK
      END
      ELSE
      BEGIN
      /* Try 5 times */
      IF @Counting = 5
      BREAK 
      PRINT 'EMAIL FAILED, WAIT 10 SECONDS, TRY AGAIN'
      /* 000 hours, 00 minutes, and 10 seconds */
      WAITFOR DELAY '000:00:10'
      END
      END
      END
      GO

Informazioni

Quando si invia un messaggio di posta elettronica utilizzando la stored procedure xp_sendmail stored procedure estesa, la stored procedure xp_sendmail esteso stored procedure rende molte chiamate all'API MAPI. Tuttavia, l'opzione di tentativi di questo aggiornamento rapido (hotfix) viene aggiunto solo per una singola chiamata che ha causato l'errore con il seguente messaggio di errore:
HRESULT = 0X80040115

Riferimenti

Per ulteriori informazioni sulla terminologia di aggiornamento software, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
824684Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft
Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
263556Configurazione di SQL Mail
315886Problemi di SQL Mail
820220Quando si invia posta elettronica utilizzando la stored procedure estesa xp_sendmail si verifica un errore 0 x 80070005 o di 0x80040005

ProprietÓ

Identificativo articolo: 833045 - Ultima modifica: venerdý 2 novembre 2007 - Revisione: 4.3
Le informazioni in questo articolo si applicano a:
  • 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
Chiavi:á
kbmt kbhotfixserver kbqfe kbregistry kbsqlserv2000presp4fix kbfix kbbug kbemail kbdll kbprb kberrmsg kbsqlservmail KB833045 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 833045
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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