SQL Server-tietokanta ja klassinen DataOps – Taulujen populointi, jobit ja versiointi

Jani Savolainen

Tämä blogi päättää blogisarjani SQL Server-tietokantojen klassiseen DataOpsiin liittyen. Tässä blogissa keskitytään taulujen (uudelleen-) luomiseen, SQL Server jobien (uudelleen-)luomiseen sekä tietokantatuotteen versiointiin.

Clean install-skriptimoduulit

Tänään läpikäydään seuraavat skriptikokonaisuudet:

  • Populate tables -skripti populoi käyttäjätaulujen sisällön.
  • Jobs -skripti (uudelleen-)luo kantaratkaisun SQL Server jobit.
  • Version -skriptihoitaa lopuksi versiopäivityksen lokitauluun.

Populate tables -skripti

Populate tables -skriptin vaiheet ovat:

  • Populoidaan käyttäjätaulut pää- ja viiteavainten mukaisessa parent-child -hierarkiajärjestyksessä.

Ohessa esimerkkkiskripti, jossa lisätään tauluun useampi rivi kerralla. Tämä on eritoten kätevää silloin, kun lisättäviä tietueita on kymmeniä tai vielä paljon enemmän. Vältyt näin turhan koodin kirjoittamiselta. Voit toki myös generoida T-SQL-koodin, joka luo dynaamisesti luontilausekkeet haluttuun muotoon, tai sitten voit käyttää jonkin kolmannen osapuolen koodingenerointityökaluja.

Entä kun haluat lisätä tauluun vain tietyt rivit, mutta joudutkin ajamaan kyseisen skriptin uudelleen? Silloin on näppärä käyttää IF EXISTS-määrettä seuraavalla tavalla:

Jobs -skripti

Jobs -skriptin vaiheet ovat:

  • Poistetaan vanhat SQL Server jobit
  • (Uudelleen-) Luodaan SQL Server jobit

Esimerkki vanhan SQL Server jobin poistosta scheduleineen. SQL Server jobit löytyvät msdb:n sysjobs_view -näkymästä.

Varsinaisen SQL Server jobin luontiin tarvitset seuraavia system stored procedureja:

  • Sp_add_job
  • Sp_add_job_server
  • Sp_add_job_step
  • Sp_add_jobschedule

Esimerkiksi; näin luodaan uusi SQL Server jobi, joka putsaa käyttäjätauluista  vanhentuneita rivejä:

Ensin lisätään jobi ja enabloidaan se. Sitten liitetään jobi serveriin, missä se ajetaan:

Lisätään SQL Server jobille steppi, jossa haluttu rivienpoistoproseduuri suoritetaan:

Lopuksi luodaan ja enabloidaan haluttu schedule jobille, tässä tapauksessa toistuva:

Version -skripti

Version-skriptin tehtävänä on tallentaa tuotteen versiointitiedot kronologisesti tiatokantatauluun. Tämän kautta on sitten helppo seurata, että missä tuoteversiossa mennään milloinkin. Versiotaulun rakenne voi olla yksinkertaisimmillaan esimerkiksi tällainen:

  • Versionumerokenttä, esimerkiksi 16100.
  • Versionimikenttä, esimerkiksi V16 CU1.
  • Asennuspvm -kenttä, esimerkiksi 2024-10-30 15:50:00.000

Hyvänä käytäntönä voidaan pitää sitä, että jokainen yksittäinen asennus jättää tähän tauluun tietueen versiohistoriaan. Tästä on iloa installerille. 😉

Loppusanat

Tämä olikin sitten tämän blogisarjan viimeinen postaus. Nyt sinulla pitäisi olla ihan hyvät perusteet hallussa siitä, kuinka tietokantaskriptejä tehdään tuotekehitysmielessä. Systemaattisuus, modulaarisuus ja toistettavuus on tässä hommassa kaiken A ja O.

Miten voisimme olla avuksi juuri sinun tietokantaongelmissasi?

Jani K. Savolainen

jani.savolainen@dbproservices.fi

0440353637

VP & Chairman

DB Pro Services Oy

Saatat olla kiinnostunut:

SQL-tietokanta – historia, nykytila ja tulevaisuus: historia

Ota yhteyttä