Aracılığıyla paylaş


SQL Server Agent iş arşiv veritabanı posta iletileri ve olay günlükleri oluşturma

Veritabanı posta iletilerini ve eklerini kopya içinde korunur msdb tablolar veritabanı posta olay günlüğü ile birlikte. Düzenli olarak tablolar ve arşiv mesajları ve artık gerekli olmayan olaylar boyutunu küçültmek isteyebilirsiniz. Aşağıdaki yordamlar işlemini otomatikleştirmek için bir SQL Server Agent işi oluşturmak.

  • Başlamadan önce: , Önkoşullar, tavsiye, izinleri

  • Arşiv veritabanı posta iletileri ve günlüklerini kullanma: SQL Server Agent 

Başlamadan Önce

Ön Koşullar

Özel arşiv veritabanı arşiv verileri depolamak için yeni tablolar bulunabilir. Alternatif satır bir metin dosyasına dışa.

Üst

Öneriler

Üretim ortamınızda ek hata denetimi ekleyin ve işi başarısız olursa, operatörler için e-posta iletisi göndermek isteyebilirsiniz.

Üst

İzinler

You must be a member of sysadmin bu konuda açıklanan saklı yordamları yürütmek için sunucu rolü.

Üst

İşlemine genel bakış

  • İlk yordamı aşağıdaki adımları izleyerek arşiv veritabanı posta adında bir işi oluşturur.

    1. Tüm iletileri sonra önceki ayın biçiminde adlı yeni bir tablo veritabanı posta tablolardan kopyalamak DBMailArchive_<year_month>.

    2. Ekleri ilgili iletilerin kopyasını kopyalanan veritabanı posta tablolardan sonra önceki ayın biçiminde adlı yeni bir tabloya ilk adımda DBMailArchive_Attachments_<year_month>.

    3. İlk adımda, veritabanı posta tablolardan sonra önceki ayın biçiminde adlı yeni bir tabloya kopyalanan veritabanı posta olay günlüğü iletileri ile ilişkili olayları Kopyala DBMailArchive_Log_<year_month>.

    4. Aktarılan posta öğeleri kayıtları veritabanı posta tablodan silin.

    5. Veritabanı posta olay günlüğünden aktarılan posta öğeleri ilgili olayları siler.

  • İşin düzenli çalışmasını zamanlayabilirsiniz.

Üst

Bir SQL Server Agent işi oluşturmak için

  1. Nesne Explorer'da genişletin SQL Serverajan, sağ İşve ardından Yeni iş.

  2. İçinde Yeni iş iletişim kutusunda, ad arşiv veritabanı posta yazın.

  3. İçinde sahibi kutusunda, sahibi bir üyesi olduğunu doğrulayın sysadmin sunucu rolü.

  4. İçinde Kategori kutusunda, tıklayın Veritabanı bakım.

  5. İçinde Açıklama yazın Arşiv veritabanı posta iletilerive ardından adım.

Genel Bakış

Veritabanı posta iletilerini arşivlemek için bir adım oluşturmak için

  1. Tarih adım sayfa'yı Yeni.

  2. İçinde Adım adı veritabanı posta öğeleri kopyala yazın.

  3. İçinde türü kutu, seçme Transact-sql komut dosyası (t-sql).

  4. İçinde veritabanı kutu, seçme msdb.

  5. İçinde komut önceki ay sonra geçerli ayın başlangıcını eski satırlar içeren adlı bir tablo oluşturmak için aşağıdaki deyimi yazın:

    DECLARE @LastMonth nvarchar(12);
    DECLARE @CopyDate nvarchar(20) ;
    DECLARE @CreateTable nvarchar(250) ;
    SET @LastMonth = (SELECT CAST(DATEPART(yyyy,GETDATE()) AS CHAR(4)) + '_' + CAST(DATEPART(mm,GETDATE())-1 AS varchar(2))) ;
    SET @CopyDate = (SELECT CAST(CONVERT(char(8), CURRENT_TIMESTAMP- DATEPART(dd,GETDATE()-1), 112) AS datetime))
    SET @CreateTable = 'SELECT * INTO msdb.dbo.[DBMailArchive_' + @LastMonth + '] FROM sysmail_allitems WHERE send_request_date < ''' + @CopyDate +'''';
    EXEC sp_executesql @CreateTable ;
    
  6. Tıklayın Tamam adım kaydetmek için.

Genel Bakış

Veritabanı posta ekleri arşivlemek için bir adım oluşturmak için

  1. Tarih adım sayfa'yı Yeni.

  2. İçinde Adım adı Kopyala veritabanı posta ekleri yazın.

  3. İçinde türü kutu, seçme Transact-sql komut dosyası (t-sql).

  4. İçinde veritabanı kutu, seçme msdb.

  5. İçinde komut önceki ay sonra önceki adımda aktarılan iletileri karşılık gelen ekleri içeren adlı bir ek tablo oluşturmak için aşağıdaki deyimi yazın:

    DECLARE @LastMonth nvarchar(12);
    DECLARE @CopyDate nvarchar(20) ;
    DECLARE @CreateTable nvarchar(250) ;
    SET @LastMonth = (SELECT CAST(DATEPART(yyyy,GETDATE()) AS CHAR(4)) + '_' + CAST(DATEPART(mm,GETDATE())-1 AS varchar(2))) ;
    SET @CopyDate = (SELECT CAST(CONVERT(char(8), CURRENT_TIMESTAMP- DATEPART(dd,GETDATE()-1), 112) AS datetime))
    SET @CreateTable = 'SELECT * INTO msdb.dbo.[DBMailArchive_Attachments_' + @LastMonth + '] FROM sysmail_attachments 
     WHERE mailitem_id in (SELECT DISTINCT mailitem_id FROM [DBMailArchive_' + @LastMonth + '] )';
    EXEC sp_executesql @CreateTable ;
    
  6. Tıklayın Tamam adım kaydetmek için.

Genel Bakış

Veritabanı posta günlüğü arşivlemek için bir adım oluşturmak için

  1. Tarih adım sayfa'yı Yeni.

  2. İçinde Adım adı Kopyala veritabanı posta günlüğü yazın.

  3. İçinde türü kutu, seçme Transact-sql komut dosyası (t-sql).

  4. İçinde veritabanı kutu, seçme msdb.

  5. İçinde komut önceki ay sonra önceki adımda aktarılan iletileri karşılık gelen günlük girdilerini içeren adlı bir günlük tablo oluşturmak için aşağıdaki deyimi yazın:

    DECLARE @LastMonth nvarchar(12);
    DECLARE @CopyDate nvarchar(20) ;
    DECLARE @CreateTable nvarchar(250) ;
    SET @LastMonth = (SELECT CAST(DATEPART(yyyy,GETDATE()) AS CHAR(4)) + '_' + CAST(DATEPART(mm,GETDATE())-1 AS varchar(2))) ;
    SET @CopyDate = (SELECT CAST(CONVERT(char(8), CURRENT_TIMESTAMP- DATEPART(dd,GETDATE()-1), 112) AS datetime))
    SET @CreateTable = 'SELECT * INTO msdb.dbo.[DBMailArchive_Log_' + @LastMonth + '] FROM sysmail_Event_Log 
     WHERE mailitem_id in (SELECT DISTINCT mailitem_id FROM [DBMailArchive_' + @LastMonth + '] )';
    EXEC sp_executesql @CreateTable ;
    
  6. Tıklayın Tamam adım kaydetmek için.

Genel Bakış

Veritabanı Mail'den arşivlenmiş satırları kaldırmak için adımı oluşturmak için

  1. Tarih adım sayfa'yı Yeni.

  2. İçinde Adım adı veritabanı posta kaldırma satırları yazın.

  3. İçinde türü kutu, seçme Transact-sql komut dosyası (t-sql).

  4. İçinde veritabanı kutu, seçme msdb.

  5. İçinde komut veritabanı posta tablolardan satırları geçerli ay eski kaldırmak için aşağıdaki deyimi yazın:

    DECLARE @CopyDate nvarchar(20) ;
    SET @CopyDate = (SELECT CAST(CONVERT(char(8), CURRENT_TIMESTAMP- DATEPART(dd,GETDATE()-1), 112) AS datetime)) ;
    EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @CopyDate ;
    
  6. Tıklayın Tamam adım kaydetmek için.

Genel Bakış

Arşivlenen öğeleri veritabanı posta olay günlüğü'kaldırmak için adımı oluşturmak için

  1. Tarih adım sayfa'yı Yeni.

  2. İçinde Adım adı kutu tipi kaldırma satırları veritabanı posta olay günlüğü '.

  3. İçinde türü kutu, seçme Transact-sql komut dosyası (t-sql).

  4. İçinde komut satırları geçerli ay eski veritabanı posta olay günlüğü'kaldırmak için aşağıdaki deyimi yazın:

    DECLARE @CopyDate nvarchar(20) ;
    SET @CopyDate = (SELECT CAST(CONVERT(char(8), CURRENT_TIMESTAMP- DATEPART(dd,GETDATE()-1), 112) AS datetime)) ;
    EXECUTE msdb.dbo.sysmail_delete_log_sp @logged_before = @CopyDate ;
    
  5. Tıklayın Tamam adım kaydetmek için.

Genel Bakış

Düzenli aralıklarla çalıştırmak için işi zamanlamak için

  1. İçinde Yeni iş iletişim kutusunda, tıklatın programları.

  2. Tarih programları sayfa'yı Yeni.

  3. İçinde ad arşiv veritabanı posta yazın.

  4. İçinde zamanlama türü kutu, seçme yinelenen.

  5. İçinde frekans alan, işi düzenli aralıklarla, örneğin her ay bir kez çalıştırmak için seçenekleri belirleyin.

  6. İçinde günlük frekans alan, seçim Occurs once, <zaman>.

  7. Dilek ve ardından diğer seçeneklerin yapılandırıldığını doğrulamak Tamam zamanlamayı kaydetmek için.

  8. Tıklayın Tamam işi kaydetmek için.

Genel Bakış