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

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.

279867
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
BUG #: 351140 (RIFERIMENTO)
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 ONIF RIGHT (@dir, 1) <> '\' beginselect @dir =@dir +'\'endSELECT @dir = 'dir /s /b '+'"'+@dir + @planname+'*.txt'+'"' +' >c:\dir.txt'create table #TMP_MAINT_FILENAMES (NAME1 varchar(8000))exec xp_cmdshell @dirBULK INSERT #TMP_MAINT_FILENAMES   FROM 'c:\dir.txt'   WITH       (         ROWTERMINATOR = '\n'      )select @mailfilename=MAX(name1) from #TMP_MAINT_FILENAMESprint '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 '+@plannameselect @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_FILENAMESexec 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.

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 279867 - Ultima revisione: 01/16/2015 21:08:47 - Revisione: 5.2

  • Microsoft SQL Server 2000 Standard Edition
  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB279867 KbMtit
Feedback