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.
Pierwsza procedura tworzy zadanie o nazwie archiwum poczty bazy danych z czterech krokach.
Pierwszym krokiem kopiuje wszystkie komunikaty z tabel bazy danych poczty do nowej tabela o nazwie po poprzedniego miesiąca w formacie DBMailArchive_<year_month>.
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>.
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>.
Krok czwarty usuwa rekordy elementów poczty przeniesione z tabel bazy danych poczty.
Piąty etap usuwa zdarzenie dotyczące elementów poczty przeniesione z dziennika zdarzeń poczty bazy danych.
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
W Eksploratorze obiektów rozwiń SQL Server Agent, kliknij prawym przyciskiem myszy zadania, a następnie kliknij przycisk Nowe zadanie.
W Nowe zadanie dialogowym nazwę wpisz archiwum poczty bazy danych.
W właściciela pole, upewnij się, że właściciel jest element członkowski z sysadmin roli serwera stałych.
W kategorii kliknij przycisk Konserwacji bazy danych.
W Opis wpisz bazy danych archiwum wiadomości, a następnie kliknij przycisk kroki.
Aby utworzyć krok archiwum wiadomości bazy danych
Na kroki strona, kliknij przycisk Nowy.
W Nazwa kroku wpisz elementy poczty kopii bazy danych.
W typu wybierz pozycję skryptów języka Transact-SQL (T-SQL).
W bazy danych wybierz pozycję msdb.
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 ;
Kliknij OK krok.
Aby utworzyć krok do archiwizacji załączniki poczty bazy danych
Na kroki strona, kliknij przycisk Nowy.
W Nazwa kroku wpisz załączniki wiadomości kopii bazy danych.
W typu wybierz pozycję skryptów języka Transact-SQL (T-SQL).
W bazy danych wybierz pozycję msdb.
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 ;
Kliknij OK krok.
Aby utworzyć krok, aby zarchiwizować dziennik bazy danych poczty
Na kroki strona, kliknij przycisk Nowy.
W Nazwa kroku wpisz dziennika poczty kopii bazy danych.
W typu wybierz pozycję skryptów języka Transact-SQL (T-SQL).
W bazy danych wybierz pozycję msdb.
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 ;
Kliknij OK krok.
Aby utworzyć krok, aby usunąć zarchiwizowany wiersze z bazy danych poczty
Na kroki strona, kliknij przycisk Nowy.
W Nazwa kroku wpisz Usuń wiersze z bazy danych poczty.
W typu wybierz pozycję skryptów języka Transact-SQL (T-SQL).
W bazy danych wybierz pozycję msdb.
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 ;
Kliknij OK krok.
Aby utworzyć krok do usunięcia zarchiwizowanych elementów z bazy danych korespondencji zdarzenie dziennika
Na kroki strona, kliknij przycisk Nowy.
W Nazwa kroku typu pole Usuń wiersze z bazy danych korespondencji zdarzenie dziennika.
W typu wybierz pozycję skryptów języka Transact-SQL (T-SQL).
W bazy danych wybierz pozycję msdb.
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 ;
Kliknij OK krok.
Aby zaplanować zadanie uruchamiane na początku każdego miesiąca
W Nowe zadanie okno dialogowe, kliknij przycisk harmonogramy.
Na harmonogramy strona, kliknij przycisk Nowy.
W nazwę wpisz archiwum poczty bazy danych.
W typu harmonogramu wybierz pozycję cykliczny.
W częstotliwości obszaru, zaznacz odpowiednie opcje, aby uruchomić zadanie pierwszego dnia każdego miesiąca.
W częstotliwości dziennej obszaru wybierz Occurs raz na 3: 00: 00 AM.
Sprawdź, czy inne opcje są skonfigurowane jako rozliczona, a następnie kliknij OK zapisać harmonogramu.
Kliknij OK zapisać zadanie.
Zabezpieczenia
Musi być element członkowski z sysadmin roli serwera stałych wykonać procedur przechowywanych, opisane w tym temacie.