MSSQL rezerves kopiju veidošana

Lai risinātu iepriekš aprakstītās problēmas, veidojot MSSQL automātiskās rezerves kopijas, izveidoju savu mazu programmiņu. Tās galvenās funkcijas:

  • veidot rezerves kopijas visām uz servera esošām datubāzēm;
  • apstrādāt reizē vairākus datubāzu serverus (vai instances);
  • sūtīt skaisti noformētus statusu pārskatus;
  • izdzēst novecojušas rezerves kopijas.

Lejupielāde: SqlBackup.zip (gan pirmkods, gan kompilēta versija)

Konfigurācijas fails un pirmkods ir dokumentēts pietiekoši, lai jebkurš šo kodu varētu izmantot, pielāgojot vai arī neko nemainot.

Komandējumi

Vēl nesen man bija priekšstats, ka, ja uzņēmums darbinieku nosūta komandējumā, darbiniekam ir garantijas, ka uzņēmums par viņu parūpēsies un šī garantija ir noteikta likumā. Izrādās, ka tā vis nav.

Citāts no MK noteikumiem http://www.likumi.lv/doc.php?id=63561:

18.2. pildot darba (dienesta) pienākumus, kā arī no viņa neatkarīgu iemeslu dēļ (piemēram, biļešu trūkums, lidmašīnas pacelšanās neiespējamība, transportlīdzekļa remonts), — dienas naudu (kompensāciju par papildu izdevumiem) izmaksā un citus izdevumus par dienām, kas pārsniedz noteikto komandējuma (darba brauciena) laiku, darbiniekam atlīdzina, ja institūcijas vadītājs pēc darbinieka atgriešanās pastāvīgajā darba (dienesta) vietā ir motivēti pagarinājis komandējuma (darba brauciena) laiku;

No šī citāta var secināt, ka šodien aktuālajā situācijā ar Īslandes vulkānu darba devējam nav pienākuma turpināt maksāt dienas naudu un viesnīcu, ja darbinieks nevar nokļūt mājās. Vienīgā garantija ir tā, ka komandējuma laikā nevar cilvēku atlaist vai mainīt algu.

Izklausās, ka šie noteikumi ir rakstīti, lai aizsargātos pret situācijām, kur valsts iestādēs vadītājs sev tuvos cilvēkus sūta nepamatotos komandējumos, taču ir aizmirsts par normālajām situācijām bez korupcijas.

Mani gan šī problēma neskar, jo uzņēmums turpina maksāt gan dienas naudu, gan par viesnīcu, taču ļoti iespējams, ka ir cilvēki, kam nav tā paveicies.

Silverlight data binding un validācija

Silverlight 3 iebūvētie data binding un ar to saistītās validācijas ir pamatīga sāpe. Pavisam vienkāršos scenārijos tā strādā kā gaidīts, bet pietiek vēlēties kaut ko nedaudz sarežģītāku, lai konstatētu, ka lielākā daļa vēlmju tā arī paliks vēlmes, jo tās realizēt ir praktiski neiespējami.

Labi raksti par šo tēmu atrodami The Joy Of Code blogā (trīs rakstu sērija). Par laimi, Silverlight 4 jau ir iznācis un praktisku iemeslu palikt pie Silverlight 3 īsti nav.

Agile

Agile nozīmē to, ka Izpildītājs smaida un piekrīt, kad Pasūtītājs kārtējo reizi maina tvērumu (scope).

Tāda diemžēl ir ļoti daudzu vadītāju uztvere, kas nav iemācījušies, ka kopā ar dažādām Agile metodoloģijām nenāk tikai iespēja mainīt prasības, bet arī daudz dažādi citi ierobežojumi un pasākumu kopumi. Paņem to, kas izdevīgi, nepaņemot to, kas nepieciešams, lai metodoloģiju veiksmīgi īstenotu.

Slinkie programmētāji

Šodien ieguvu vērtīgu atziņu. Labam programmētājam ir jābūt slinkam. Labs un slinks programmētājs centīsies sev uzdoto darbu izdarīt, radot pēc iespējas mazāk artefaktus (kodu utt.). Kas savukārt nozīmē, ka radītos artefaktus vēlāk būs vieglāk pārvaldīt un uzturēt.

Jautājums gan filozofisks, bet neliela paslinkošana, pirms ķerties klāt nopietna darba izpildei, vienmēr nāks par labu, jo ļaus sakopot domas un varbūt saprast, ka pirmais izdomātais risinājums nebūt nav labākais.

Microsoft Security Essentials Latvijā

Jau pirms laba laika parādījās jauns bezmaksas antivīruss Windows operētājsistēmai. Šoreiz no paša Microsoft. Pats to neesmu pārāk pētījis, bet pirmais iespaids, kā arī internetā lasītais, vedina domāt, ka šobrīd šis ir labākais (vienkāršākais utt.) risinājums. Gan jau ka atrodams kāds pētījums, kurā antivīruss X atrod par 2% vairāk vīrusu, bet cik tādiem pētījumiem var ticēt, nekad neviens neuzzinās.

Diemžēl Microsoft ir vismaz viena izstrādātāju komanda, kas pelnījusi dabūt pa nagiem, jo iedomājušies, ka Accept-Language HTTP parametrs nenozīmē vis lietotāja atrašanās vietu, bet gan to, kādā valodā lietotājs vēlas saņemt saturu. Un, lai gan specifikācija to nenosaka, tad parasti tiek pieņemts, ja lapa neatbalsta nevienu no valodām, tad saturs tiek parādīts lapas noklusētajā valodā (ja nu, piemēram, tvnet.lv atver tūrists no Ķīnas interneta kafejnīcas).

Microsoft lapās salīdzinoši bieži sastopama problēma, ka gadījumā, ja satura attiecīgajā valodā nav, tad lietotājam tiek parādīta tikai kļūda un nekas cits. MSE gadījumā kļūdas teksts vispār ir ačgārns: “You appear to be in a country or region where Microsoft Security Essentials is not available.” Lai tiktu galā ar šo problēmu, viens no variantiem ir mainīt pārlūkprogrammas uzstādījumus. Daudz vienkāršāks variants ir nedaudz palabot lapas adresi ar roku:

Google atrod šādu adresi: http://www.microsoft.com/security_essentials/market.aspx

Lai tiktu galā ar pārbaudi, var izmantot: http://www.microsoft.com/security_essentials/?mkt=en-us

Triks ar “?mkt=en-us” strādā arī citās Microsoft lapās, kur tiek veiktas līdzīgas pārbaudes. Pāris gadus atpakaļ Windows Live lapā nevarēja tikt iekšā (un lejupielādēt, piemēram, Live Messenger) ar “nepareizi” konfigurētu pārlūkprogrammu un arī tad strādāja šī pati pieeja.

MSSQL rezerves kopiju problēmas

Savulaik, strādājot ar MySQL, priecājos par iespēju veidot ērtas rezerves kopijas ar mysqldump. Pēcāk, pārejot uz Microsoft SQL Server, priecājos par iespēju izmantot iebūvēto rezerves kopiju veidošanu, kas gan nebija tik ērti izmantojama citiem mērķiem kā parasti SQL skripti, bet toties tika veidoti krietni ātrāk un deva iespēju veidot inkrementālas rezerves kopijas.

Tomēr pēc kāda laika tika apzinātas vairākas problēmas, kas piemīt iebūvētajām backup funkcijām, kad tās izmanto, piemēram, katras nakts rezerves kopiju veidošanai, no kurām dažas:

  • nav iespējams norādīt, pret kuru pilno rezerves kopiju tiks veikta inkrementālā – tā vienmēr būs pret pēdējo pilno;
  • nav iespējas automātiski dzēst vecās rezerves kopijas (lai gan katrai rezerves kopijai var norādīt, cik ilgi tā būs derīga).

Otro problēmu daļēji risina Maintenance plan uzdevums, kas tīra rezerves kopiju vēsturi. Taču – tas tīra rezerves kopijas, nevis, ievērojot katras kopijas derīguma laiku, bet gan visas, kas vecākas par x dienām.

Pirmo problēmu iespējams daļēji risināt, izmantojot COPY_ONLY parametru BACKUP operācijai. Tas gan neļauj norādīt, ka inkrementālā kopija jāveido uz noteiktas pilnās kopijas bāzes, taču tas ļauj izveidot kopijas, kas ir neatkarīgas, un kuru izdzēšana nesabojās kādu citu kopiju.

Tieši šis pēdējais faktors bieži ir bijis ļoti svarīgs – ir nepieciešams izveidot automātiskās rezerves kopijas katru nakti, bet paralēli tam nepieciešams ļaut datubāzes administratoram pašam spēlēties ar savām rezerves kopijām – tās dzēst, veidot utt. Un automātiskās kopijas netiek glabātas ilgāk kā, piemēram, nedēļu, kamēr manuāli veidotās var tikt saglabātas bezgalīgi.

Lai ar šīm problēmām cīnītos, kā arī ērti automatizētu vairāku servera instanču rezerves kopiju veidošanu, uzrakstīju nelielu programmiņu, kas automātiski veic šādu kopiju veidošanu. Programmu ar visu pirmkodu drīzumā nopublicēšu, ja nu gadījumā vēl kāds atpazīst aprakstītajā savas problēmas (vai varbūt tagad saprot, ka savs esošais mehānisms īsti pareizi nestrādā).

Microsoft SQL Server backup iespējas gan sniedzas tālāk par parastu rezerves kopiju veidošanu (piemēram, transaction log backup-ošana), taču ikdienā lielākā daļa lietotāju izmanto šādu vienkāršotu pieeju.

Papildināts: MSSQL rezerves kopiju veidošana