Oprava: Odesílání sestavy Údržba mailem operátor selže v plán údržby

Překlady článku Překlady článku
ID článku: 279867 - Produkty, které se vztahují k tomuto článku.
CHYBA Č: 351140 (SHILOH_BUGS)
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Plán s databáze Údržba SQL Server zahrnuje možnost Odeslat sestavu údržby (tj soubor obsahující výsledky pro provedení plánu údržby) mailem předdefinované operátor na serveru. Odesílání e-mailem soubor sestavy údržby operátor se pravděpodobně nezdaří s následující chybová zpráva, které lze nalézt v sestavě Údržba pro plán údržba databáze:
Chyba 18025: Xp_sendmail [Microsoft] [ODBC SQL Server Driver] SQL Server: došlo k chybě pošty 0x80004005
Tato chyba nemá vliv na vykazování stavu úlohy; úlohy samotný je zobrazen jako úspěšná.

Příčina

Xp_sendmail rozšířené uložené procedury se nezdaří s výše Chyba při pokusu otevřít soubor odeslat jako přílohu e-mailu. Sqlmaint.exe provede Údržba plán a zapíše výstup soubor sestavy. Poslední krok v Údržba plán, který je odeslat e-mailu je také evidován v sestavě. Protože xp_sendmail pokusí odeslat jako přílohu, selže pokus o je stále otevřen soubor sestavy.

Řešení

Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro SQL Server 2000. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
290211INF: Jak získat nejnovější aktualizaci Service Pack pro SQL Server 2000

Jak potíže obejít

Řešení tohoto problému naleznete v části "Další informace" tohoto článku.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v SQL Server 2000. Tento problém byl poprvé opraven v SQL Server 2000 Service Pack 1.

Další informace

Chcete-li tento problém vyřešit, můžete zahrnout skript níže jako krok další úlohy v poslední vytvořené konkrétním Údržba plán úlohy. Tento skript odešle poslední soubor sestavy pro konkrétní Údržba plán zadanou e-mailovou adresu.

Toto řešení použít, postupujte takto:
  1. Identifikovat poslední úlohy pro plánování Údržba.
  2. Klepněte pravým tlačítkem myši na úlohu, klepněte na tlačítko Vlastnosti, klepněte na kroky, vyberte krok a potom klepněte na tlačítko Upravit.
  3. V dialogovém okně Upravit krok úlohy klepněte na kartu Upřesnit.
  4. Nastavte na úspěšné akcePřejít na další krok.
  5. Klepněte na tlačítko OK v dialogovém okně Upravit krok úlohy.
  6. Klepnutím na tlačítko Nový přidejte nový krok a potom zadejte název kroku. Typ by měl být Skriptů Transact-SQL (TSQL) a databáze by měla být předlohy.
  7. Vložte následující skript v příkazovém okně:
    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. Přesvědčte se, zda nastavena hodnoty @ planname, @ dir a @ operátor ve skriptu.
  9. Uložit úlohu kroku.
Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené,. včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele.

Vlastnosti

ID článku: 279867 - Poslední aktualizace: 23. června 2005 - Revize: 5.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2000 Standard Edition
Klíčová slova: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB279867 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:279867

Dejte nám zpětnou vazbu

 

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