Si t’i riktheni të dhënat SQL Server nga freskimet (UPDATE) dhe fshirjet (DELETE) aksidentale

Makthi më i keq i SQL Server DBA është humbja e të dhënave nga gabimet e tyre. Nuk është e pazakonshme që dikush në mënyrë jo të duhur ekzekuton ose harron një WHERE shprehje gjatë ekzekutimit të DELETE ose UPDATE pyetësorëve (queries), duke rezultuar në të dhëna me gabime që potencialisht mund të jenë me miliona rreshta apo rekorde.

Kështu që, cili nga opcionet për rikthim të të dhënave SQL Server do të jetë në dispozicion?

Zgjidhja mund të jetë përdorimi i kopjës, i cili është bërë pak para se të ndodhë katastrofa e fshirjës apo e freskimeve pa dashje.

Zgjidhjet e zakonshme për të rikthyer të dhënat e humbura nga databaza janë duke përdorur kopjën ekzistuese të databazës:

  1. Riktheni kopjën e databazës dhe e përdorni atë në vend të databazës origjinale.
  2. Përndryshe
    • Riktheni kopjën në Serverin e njejtë si databazë origjinale duke përdorur një emër të ndryshëm
    • Përcaktoheni në rreshtat apo rekordet relevante në databazën e rikthyer.
    • Feskoni rreshtat apo rekorded e prishura duke përdorur rreshtat nga databaza e rikthyer.

Fatëkeqësisht, shumë rrallë janë këto skenare të rikthimit kaq “të rregullta dhe të pastëra” për t’iu lejuar kaq zgjidhje të thjeshtë.

Më shumë ka të bëjë me rastet:

  • Gabimet nuk zbulohen në kohë sa më të hershme.
  • Ka shumë ndryshime pasuese në mes të krijimit të kopjës së databazës dhe ekzekutimeve të pyetësorëve të ndryshëm që kan komplikuar në mënyrë të konsiderueshme rikthimin.
  • Fluksi i të dhënave të reja.
  • Kopjet e databazave nuk janë bërë në mënyrë të rregulltë dhe të vazhdueshme sa duhet ose nuk ka asnjë.


Up the creek, WITH a paddle

Leximi i informatave nga transaction log fajlli i drejtpërdrejtë apo online, nga kopjet e transaction log ose nga transaction log të shkëputura (detached) është njëra nga opcionet për të rikthyer të dhënat.
ApexSQL Log është një vegël për rikthim në SQL Server, e aftë për të lexuar të dhëna në transaction log dhe për të rikthyer të dhënat e humbura duke i rikthyer transakcionet në gjendjën e tyre origjinale.

Për të rikthyer të dhënat e humbura nga UPDATE operacionet aksidentale ose nga operacionet DELETE duke përdorur ApexSQL Log:

    1. FIlloni ApexSQL Log
    2. Lidhuni me databazën
    3. Në hapin Select SQL logs to analyze shtoni kopjet e transaction log dhe transaction log të shkëputura (detached) të cilat dëshironi t’i lexoni. Të keni kujdes që ato duhet ta kenë renditjën e plotë që të kemi auditim të suksesshëm. Shtimi i kopjeve të databazës mund të ndihmojë në ngritjën e paraqitjës dhe kualitetit të të dhënave që po i kërkojmë.

    4. Përdorni opcionin Filter setup për të kufizuar rezultatet duke përdorur brezin kohor, tipin e operacioneve, emrin e tabelave dhe filtera të tjerë në dispozicion.

 

  • Pasi të keni caktuar të gjitha opcionet e nevojshme, klikoni Open

 

Transakcionet do të listohen në pjesën kryesore të aplikacionit ApexSQL Log. Ju ende mund ta përdorni opcionin Filter për filtrim në anën e majtë në mënyrë që të eliminoni transakcionet e panevojshme.

Që të veproni me rikthimin e të dhënave, kontrolloni transakcionet të cilat dëshironi t’i riktheni dhe klikoni Create undo script në tabelën Actions.

Që ta ekzekutoni skriptën nga editori i skriptës, klikoni Execute butonin ose shtypni F5 dhe të dhënat e humbura do të rikthehen në databazë.

Prandaj mbani në mend, që nëse pa dashje përdorni DELETE/UPDATE, ju ende mund t’i riktheni të dhënat e humbura nga databaza, në shumë raste me ApexSQL Log

Përkthyes: Dukagjin Maloku

October 20, 2015