Udostępnij za pośrednictwem


Jak Tworzenie SQL Server zadania agenta archiwum wiadomości pocztowych bazy danych i dzienników zdarzeń

Kopie wiadomości bazy danych i ich załączniki są zachowywane w msdb tabel wraz z poczty bazy danych zdarzenie dziennika.Okresowo należy zmniejszyć rozmiar tabel i usuwania wiadomości i zdarzeń, które nie są już potrzebne.Poniższe procedury tworzenia SQL Server zadanie agenta do zautomatyzowania procesu.

  1. Pierwsza procedura tworzy zadanie o nazwie archiwum poczty bazy danych z czterech krokach.

  2. Pierwszym krokiem kopiuje wszystkie komunikaty z tabel bazy danych poczty do nowej tabela o nazwie po poprzedniego miesiąca w formacie DBMailArchive_<year_month>.

  3. Drugim krokiem kopiuje załączników związanych komunikatów skopiowany w kroku pierwszym z tabel bazy danych poczty do nowej tabela o nazwie po poprzedniego miesiąca w formacie DBMailArchive_Attachments_<year_month>.

  4. Trzeci krok kopiuje zdarzenie w dzienniku zdarzeń poczty bazy danych są powiązane komunikaty skopiowany w kroku pierwszym z tabel bazy danych poczty do nowej tabela o nazwie po poprzedniego miesiąca w formacie DBMailArchive_Log_<year_month>.

  5. Krok czwarty usuwa rekordy elementów poczty przeniesione z tabel bazy danych poczty.

  6. Piąty etap usuwa zdarzenie dotyczące elementów poczty przeniesione z dziennika zdarzeń poczty bazy danych.

  7. Procedura ostatecznego planuje zadanie uruchamiane na początku każdego miesiąca.

Na przykład tabele archiwum są tworzone w msdb bazy danych.Aby zmniejszyć rozmiar msdb bazy danych, może się znajdować nowe tabele w bazie danych specjalne archiwum lub wiersze mogą być eksportowane do pliku tekstowego lub właśnie zostały usunięte.W tym przykładzie przenosi tylko wiersze do nowych tabel w msdb bazy danych.Do użytku produkcyjnego można dodać dodatkowego błędu sprawdzania i wysyłania wiadomości e-mail do operatorów, jeśli zadanie nie powiedzie się.

Aby utworzyć SQL Server zadania agenta

  1. W Eksploratorze obiektów rozwiń SQL Server Agent, kliknij prawym przyciskiem myszy zadania, a następnie kliknij przycisk Nowe zadanie.

  2. W Nowe zadanie dialogowym nazwę wpisz archiwum poczty bazy danych.

  3. W właściciela pole, upewnij się, że właściciel jest element członkowski z sysadmin roli serwera stałych.

  4. W kategorii kliknij przycisk Konserwacji bazy danych.

  5. W Opis wpisz bazy danych archiwum wiadomości, a następnie kliknij przycisk kroki.

Aby utworzyć krok archiwum wiadomości bazy danych

  1. Na kroki strona, kliknij przycisk Nowy.

  2. W Nazwa kroku wpisz elementy poczty kopii bazy danych.

  3. W typu wybierz pozycję skryptów języka Transact-SQL (T-SQL).

  4. W bazy danych wybierz pozycję msdb.

  5. W polecenia wpisz następujące instrukcja utworzyć tabela o nazwie zawierającej wiersze starsze od początku bieżącego miesiąca po poprzedniego miesiąca:

    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. Kliknij OK krok.

Aby utworzyć krok do archiwizacji załączniki poczty bazy danych

  1. Na kroki strona, kliknij przycisk Nowy.

  2. W Nazwa kroku wpisz załączniki wiadomości kopii bazy danych.

  3. W typu wybierz pozycję skryptów języka Transact-SQL (T-SQL).

  4. W bazy danych wybierz pozycję msdb.

  5. W polecenia wpisz następujące instrukcja utworzyć tabela załączników o nazwie po poprzedniego miesiąca, zawierające załączniki, które odpowiadają wiadomości przenoszone w poprzednim kroku:

    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. Kliknij OK krok.

Aby utworzyć krok, aby zarchiwizować dziennik bazy danych poczty

  1. Na kroki strona, kliknij przycisk Nowy.

  2. W Nazwa kroku wpisz dziennika poczty kopii bazy danych.

  3. W typu wybierz pozycję skryptów języka Transact-SQL (T-SQL).

  4. W bazy danych wybierz pozycję msdb.

  5. W polecenia wpisz następujące instrukcja utworzyć tabela dziennika o nazwie po poprzedniego miesiąca, zawierający wpisy dziennika, które odpowiadają wiadomości przenoszone w starszych kroku:

    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. Kliknij OK krok.

Aby utworzyć krok, aby usunąć zarchiwizowany wiersze z bazy danych poczty

  1. Na kroki strona, kliknij przycisk Nowy.

  2. W Nazwa kroku wpisz Usuń wiersze z bazy danych poczty.

  3. W typu wybierz pozycję skryptów języka Transact-SQL (T-SQL).

  4. W bazy danych wybierz pozycję msdb.

  5. W polecenia wpisz następujące instrukcja do usuwania wierszy starszych niż bieżący miesiąc z tabel bazy danych poczty:

    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. Kliknij OK krok.

Aby utworzyć krok do usunięcia zarchiwizowanych elementów z bazy danych korespondencji zdarzenie dziennika

  1. Na kroki strona, kliknij przycisk Nowy.

  2. W Nazwa kroku typu pole Usuń wiersze z bazy danych korespondencji zdarzenie dziennika.

  3. W typu wybierz pozycję skryptów języka Transact-SQL (T-SQL).

  4. W bazy danych wybierz pozycję msdb.

  5. W polecenia wpisz następujące instrukcja do usuwania wierszy starszych niż bieżący miesiąc z dziennika zdarzeń poczty bazy danych:

    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 ;
    
  6. Kliknij OK krok.

Aby zaplanować zadanie uruchamiane na początku każdego miesiąca

  1. W Nowe zadanie okno dialogowe, kliknij przycisk harmonogramy.

  2. Na harmonogramy strona, kliknij przycisk Nowy.

  3. W nazwę wpisz archiwum poczty bazy danych.

  4. W typu harmonogramu wybierz pozycję cykliczny.

  5. W częstotliwości obszaru, zaznacz odpowiednie opcje, aby uruchomić zadanie pierwszego dnia każdego miesiąca.

  6. W częstotliwości dziennej obszaru wybierz Occurs raz na 3: 00: 00 AM.

  7. Sprawdź, czy inne opcje są skonfigurowane jako rozliczona, a następnie kliknij OK zapisać harmonogramu.

  8. Kliknij OK zapisać zadanie.

Zabezpieczenia

Musi być element członkowski z sysadmin roli serwera stałych wykonać procedur przechowywanych, opisane w tym temacie.