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:
- Trebuie să arhivați 3 baze de date, să le apelați condiționat: data_base_1, data_base_2, data_base_3;
- Arhivarea bazei de date ar trebui să aibă loc zilnic la ora 2 am;
- Arhivele ar trebui păstrate timp de 7 zile de la data creării și pentru fiecare ultima zi a lunii;
- 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ă:
- Locuri de muncă → faceți clic dreapta pe → New Job;
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;