FIX: Invio di report di manutenzione tramite posta elettronica a operatore ha esito negativo nel piano di manutenzione

Traduzione articoli Traduzione articoli
Identificativo articolo: 279867 - Visualizza i prodotti a cui si riferisce l?articolo.
BUG #: 351140 (RIFERIMENTO)
Espandi tutto | Chiudi tutto

Sintomi

Un piano di manutenzione database di SQL Server include un'opzione per inviare un rapporto di manutenzione (vale a dire un file contenente i risultati per l'esecuzione del piano di manutenzione) tramite posta elettronica a un operatore predefinito sul server. Invia il file di report di manutenzione per l'operatore è possibile che non con il seguente messaggio di errore, è possibile trovare nel report manutenzione per il piano di manutenzione database:
Errore 18025: [Microsoft] [driver ODBC SQL Server] [SQL Server] xp_sendmail: non riuscita con errore posta 0 x 80004005
Questo errore non influenza la segnalazione dello stato del processo e il processo stesso viene visualizzata come esito positivo.

Cause

La stored procedure estesa xp_sendmail non riesce l'errore sopra riportato quando si tenta di inviare un file aperto come allegato di posta elettronica. Sqlmaint.exe esegue il piano di manutenzione e scrive output al file di report. Il passaggio finale in Maintenance Plan, il cui inviare un messaggio di posta elettronica, inoltre viene registrato nel report. Perché il file di report è ancora aperto quando xp_sendmail tenta di inviare, come allegato, ha esito negativo del tentativo.

Risoluzione

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

Workaround

Per risolvere questo problema, vedere la sezione "Informazioni" in questo articolo.

Status

Microsoft ha confermato che questo problema riguarda SQL Server 2000. Il problema è stato risolto nel Service Pack 1 per SQL Server 2000.

Informazioni

Per risolvere questo problema, è possibile includere lo script di seguito come un passaggio di processo aggiuntivi nell'ultima processo creato da un particolare Maintenance Plan. Questo script riportato di seguito invia l'ultimo file di report per un piano di manutenzione specifico a un indirizzo di posta elettronica specificato.

Per utilizzare questa soluzione, attenersi alla seguente procedura:
  1. Identificare il processo l'ultimo per il piano di manutenzione.
  2. Fare clic con il pulsante destro del mouse il processo, fare clic su Proprietà , fare clic su operazioni , selezionare il passaggio e quindi fare clic su Modifica .
  3. Nella finestra di dialogo Modifica passaggio di processo , fare clic sulla scheda Avanzate .
  4. impostare la proprietà azione completata per Vai al passaggio successivo .
  5. Fare clic su OK nella finestra di dialogo Modifica passaggio di processo .
  6. Fare clic su Nuovo per aggiungere un nuovo passaggio e assegnare il passaggio un nome. il tipo deve essere Script Transact-SQL (T-SQL) e il database deve essere master .
  7. Incollare lo script seguente nella finestra di comando:
    declare @planname varchar(100)
    declare @dir varchar(200)
    declare @operator varchar(50)
    declare @cmd varchar (200)
    declare @mailfilename varchar(200)
    declare @filenamelen int
    
    --Values set here can actually be provided as parameters to a stored procedure.
    --If provided as parameters to a stored procedure, rem the following select statements.
    --@plananme is the plan whose maintenance report is sent.
    --@dir is the log directory for SQL Server. It is the directory to which the 
    --maintenance report files are written. 
    --@operator is the email address of the person to whom the report file should be mailed.
    
    select @planname = 'Database Maintenance Plan 1'
    select @dir ='c:\Program Files\Microsoft SQL Server\MSSQL$SQL2K1\LOG'
    select @operator ='email@domain.com'
    --You can automatically set the above by reading various values from SQL Server.
    
    SET NOCOUNT ON
    IF RIGHT (@dir, 1) <> '\' 
    begin
    select @dir =@dir +'\'
    end
    SELECT @dir = 'dir /s /b '+'"'+@dir + @planname+'*.txt'+'"' +' >c:\dir.txt'
    
    create table #TMP_MAINT_FILENAMES (NAME1 varchar(8000))
    exec xp_cmdshell @dir
    BULK INSERT #TMP_MAINT_FILENAMES
       FROM 'c:\dir.txt'
       WITH 
          (
             ROWTERMINATOR = '\n'
          )
    
    select @mailfilename=MAX(name1) from #TMP_MAINT_FILENAMES
    print 'The following file is being sent as an atachement'
    print @mailfilename
    
    --Set the various parameters for xp_sendmail.
    declare @tmpmessage varchar(300)
    declare @tmpsubject varchar(300)
    select @tmpmessage = 'This is the last maintenance report on the server for the maintenance plan '+@planname
    select @tmpsubject = 'SQL Server Maintenance Report for '+@planname
    
    --Send the last file for the maintenance plan.
    exec master..xp_sendmail @recipients= @operator, @subject =@tmpsubject, @message=@tmpmessage, 
    @attachments= @mailfilename
    
    --Perform cleanup here.
    drop table #TMP_MAINT_FILENAMES
    exec master..xp_cmdshell "del c:\dir.txt"
    SET NOCOUNT OFF
    					
  8. Assicurarsi che i valori @ planname, @ dir e @ operatore siano impostati nello script.
  9. Salvare il passaggio di processo.
Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Questo include, ma non è limitato a, le garanzie implicite di commerciabilità o idoneità per uno scopo specifico. Questo articolo si presuppone che conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug di procedure. Tecnici del supporto Microsoft possono spiegare la funzionalità di una particolare procedura, ma in nessun sono caso a modificare questi esempi per fornire funzionalità aggiuntive o creare procedure per soddisfare specifiche esigenze.

Proprietà

Identificativo articolo: 279867 - Ultima modifica: giovedì 23 giugno 2005 - Revisione: 5.2
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Standard Edition
Chiavi: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB279867 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: 279867
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