Düzeltme: Gönderen bakım raporu e-posta için işletmen bakım planı ' başarısız.

Makale çevirileri Makale çevirileri
Makale numarası: 279867 - Bu makalenin geçerli olduğu ürünleri görün.
# HATA: 351140 (shiloh_bugs)
Hepsini aç | Hepsini kapa

Belirtiler

SQL Server veritabanı bakım planı, e-posta ile önceden tanımlanmış bir sunucu işletmeni (Bakım planını yürütülmesi için sonuçları içeren başka bir deyişle, bir dosya) bir bakım rapor göndermek için bir seçenek içerir. Işlece bakım rapor dosyasını e-postayla bakım rapora veritabanı bakım planı'için bulunan aşağıdaki hata iletisiyle başarısız olabilir:
18025 Hata: [Microsoft] [ODBC SQL Server sürücüsü] [SQL Server] xp_sendmail: posta 0x80004005 hatası
Bu hata, iş durumu bildirdiği etkilemez; iş kendisini başarılı olarak gösterilir.

Neden

Genişletilmiş saklı yordamı xp_sendmail açık bir dosyayı e-posta eki olarak göndermeye çalışırken yukarıdaki hatayla başarısız olur. Sqlmaint.exe Maintenance Plan yürütür ve çıktı raporu dosyaya yazar. Bakım olan bir e-posta göndermek için plan, son adımda, rapora de kaydedilir. Rapor dosyası açık olduğundan xp_sendmail girişimi başarısız ek olarak göndermeye çalıştığında.

Çözüm

Bu sorunu gidermek için <a0></a0>, SQL Server 2000 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
290211BILGI: en son SQL Server 2000 hizmet paketi nasıl elde edilir

Pratik Çözüm

Bu sorun için bir çözüm için bu makalenin "Daha fazla bilgi" bölümüne bakın.

Durum

Microsoft SQL Server 2000'de bir sorun olduğunu onaylamıştır. Bu sorun ilk olarak SQL Server 2000 Service Pack 1'de giderilmiştir.

Daha fazla bilgi

Bu soruna geçici bir çözüm bulmak için <a0></a0>, aşağıdaki komut dosyasını bir ek iş adımda belirli bir plan bakım tarafından oluşturulan son iş ekleyebilirsiniz. Bu komut son rapor dosyası belirli bir plan bakım için bir e-posta adresine gönderir.

Bu geçici çözümü kullanmak için <a0></a0>, aşağıdaki adımları izleyin:
  1. Sonuncu işten Maintenance Plan tanımlayın.
  2. Iş'i sağ tıklatın, Özellikler ' i tıklatın, adımları ' nı tıklatın, adımın seçin ve sonra da <a2>Düzenle</a2>'yi tıklatın.
  3. Iş adım Düzenle iletişim kutusunda, Gelişmiş sekmesini tıklatın.
  4. Başarılı eylem açık olarak Git ileri adım için ayarlayın.
  5. <a0>Iş adım Düzenle</a0> iletişim kutusunda Tamam ' ı tıklatın.
  6. Yeni bir adım eklemek için Yeni ' yi tıklatın ve sonra adım, bir ad verin. Tür, Komut dosyası Transact-SQL (TSQL) olmalıdır ve veritabanıYöneticisi olması gerekir.
  7. Komut penceresinde aşağıdaki komut dosyasını yapıştırın:
    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. Komut dosyasında @ planname, @ dir ve @ işletmen değerleri ayarlandığından emin olun.
  9. Işlem adımı kaydedin.
Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.

Özellikler

Makale numarası: 279867 - Last Review: 23 Haziran 2005 Perşembe - Gözden geçirme: 5.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Standard Edition
Anahtar Kelimeler: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB279867 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:279867

Geri Bildirim Ver

 

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