Arhivarea bazei de date în serverul ms sql cu durata de viață specificată 1 - 3

Arhivarea bazei de date este una dintre modalitățile de salvare a datelor în caz de eșec în baza de date. Configurarea backup-ului în MS SQL Server este destul de simplă și convenabilă, dar trebuie să vă gândiți că nu are suficiente caracteristici, cum ar fi, de exemplu, eliminarea vechilor arhive din depozit. Aici veți învăța cum să faceți acest lucru.







Necesitatea poate apărea pentru arhivarea zilnică a bazei de date, în care ar fi convenabil să se automatizeze acțiunile de creare de noi și ștergerea arhivelor vechi.

În exemplul următor, dorim să ilustrăm procedura pas cu pas pentru organizarea arhivării bazei de date. În acest scop, permiteți-ne să desemnați o serie de condiții de arhivare care trebuie respectate:

  1. Trebuie să arhivați 3 baze de date, să le apelați condiționat: data_base_1, data_base_2, data_base_3;
  2. Arhivarea bazei de date ar trebui să aibă loc zilnic la ora 2 am;
  3. Arhivele ar trebui păstrate timp de 7 zile de la data creării și pentru fiecare ultima zi a lunii;
  4. Arhivele trebuie să se afle pe o unitate de rețea din folderul cu numele în format data.

În diagrama bloc există un algoritm pentru organizarea arhivării.

Având în vedere diagrama bloc de mai sus (imaginea 1), procedura de organizare a arhivării bazelor de date va consta din următoarele etape:

În MS SQL Server, pentru a automatiza arhivarea, ar trebui să utilizați SQL Server Agent în Management Studio, care vă permite să organizați pas cu pas procesul de arhivare a bazei de date.

Pentru claritate și o mai bună înțelegere a procedurii, vom folosi interfața grafică:







  1. Locuri de muncă → faceți clic dreapta pe → New Job;
  • În fila General, trebuie să introduceți un nume pentru lucrare în câmpul Nume;
  • În primul pas, arhivele care nu îndeplinesc condițiile de timp specificate vor fi șterse;
  • Pași → Nou → în câmpul Nume pas, specificați numele pasului → în câmpul Comandă, specificați textul scriptului SQL:

    declarați @dir_name ca dată; - numele dosarului de arhivă în format
    --date
    declara @current_date ca dată = GETDATE (); - data curentă
    declară @temp_dir_name ca varchar (200); - numele următorului dosar de arhivă
    declara @sql ca varchar (200); - comandă sql
    declară @expire_date ca dată = GETDATE () - 7; - durata de viață a arhivelor
    declare @table ca tabel (SUBDIR varchar (100)); - tabel pentru stocarea numelor de arhivă
    declara @last_day ca int; - ultima zi a lunii

    --scrieți la @table toate numele dosarelor conținute în \\ 192.168.1.50 \ sql_server_backups \ când
    --ajutați procedura stocată xp_subdirs
    inserați executabilul @table master.dbo.xp_subdirs N '\\ 192.168.1.50 \ sql_server_backups \';

    --un ciclu în care se citește numele unui dosar cu arhive, folosind cursorul
    DECLARE next_item CURSOR PENTRU selectați * din @table
    deschideți next_item;
    WHILE (@@ FETCH_STATUS = 0)
    începe

    FETCH NEXT din next_item în @temp_dir_name; - citiți următorul director
    setați @dir_name = CONVERT (varchar, @temp_dir_name, 120); - Convertiți numele directorului într-un format de dată, de înțeles pentru server (* pe fiecare server propriu afișare dată)
    set @last_day = zi (DATEADD (zi, 1, @ dir_name)); - adăugarea primei zile la data arhivării și, dacă ziua următoare a lunii este egală cu 1 - arhiva a fost creată în ultima zi a lunii precedente

    DACĂ ((@ nume_dir 1)
    începe

    --ștergeți dosarul de arhivare folosind comanda liniei de comandă RD

    set @sql = N'rd / s / q \\ 192.168.1.50 \ sql_server_backups \ '+ CONVERT (varchar,
    nume_dir., 104);

    -- xp_cmdshell este o procedură memorată extinsă care transmite comenzi
    sistem de operare
    exec master.dbo.xp_cmdshell @sql;
    capăt
    capăt
    CLOSE next_item;
    DEALLOCATE next_item;







    Trimiteți-le prietenilor: