Atnaujinimo komponentai nepasirenkami naudojant sql. SQL užklausos duomenims atnaujinti (ATNAUJINIMAS)

Šiame straipsnyje kalbėsiu apie duomenų bazių atnaujinimo procesą „Microsoft“ duomenys SQL serveris ir pasiūlyti programinės įrangos produktą, kuris gali būti naudojamas užsakovo ir rangovo sąveikoje.

Visų pirma, kodėl tai būtina?

Mūsų įmonė vystosi programinė įranga ir daugeliu atvejų mes naudojame Microsoft SQL Server kaip DBVS. Tiksliau vadinsime plėtros bendrove atlikėjas“, o kliento įmonė – “ klientas».

Atlikdami pakeitimus duomenų bazėje, kūrėjo programuotojai sukuria rankiniu būdu arba specializuota programine įranga sukurtų scenarijų rinkinį.

Vėliau iškyla šios problemos:

  1. vykdytojo pusėje patikrinkite scenarijų rinkinio vykdymą bandomojoje duomenų bazėje;
  2. kliento pusėje vykdyti scenarijus kliento darbo duomenų bazėje;
Tarkime, kad ir programuotojas, ir testuotojas gali patikrinti scenarijų vykdymą bandomojoje duomenų bazėje. naudojant „Microsoft“. SQL Server Managerment Studio (SSMS). Tačiau priversti klientą atlikti šias operacijas naudojant SSMS neįmanoma, nes:
  • jis gali iš viso neįdiegti SSMS;
  • klientas gali neturėti žinių apie darbą su duomenų baze. Ir apskritai neturėtų;
  • jei vykdant scenarijus atsiras klaidų, klientui bus sunku juos surinkti siųsti kūrėjams;

Kaip sprendžiame šią problemą?

Sukūrėme programinės įrangos produktą „Database Update Manager“, kurį sudaro dvi programos:
  • atnaujinimo paketo paruošimo programa;
  • atnaujinimo paketo vykdymo programa;
Programa, skirta naujinimui paruošti
Programa naudojasi atlikėjas. Programuotojai jį naudoja norėdami sukurti scenarijų rinkinį į vieną failą.

Iš šios programos savybių galima išskirti du dalykus:

  • prie sugeneruoto atnaujinimo paketo galima pridėti informaciją apie referencinės duomenų bazės struktūrą. Jei tokia informacija yra pakuotėje, klientas, baigęs atnaujinimą, gali palyginti savo duomenų bazės struktūrą su referencine;
  • klientui atnaujinimo vykdymo programa perduodama viena forma EXE failą, kurio viduje yra įterpti scenarijai ir nuorodų bazės struktūra.
Programa, skirta atnaujinti
Kaip jau minėta, programa paleidžiama naudojant vieną EXE failą. Daugeliu atvejų vartotojui tereikia įvesti registracijos informaciją (beje, šios reikšmės gali būti įtrauktos į atnaujinimo paketą) ir visur spustelėti „Kitas“.

Antrasis ekranas atnaujintas. Po to galite palyginti pakete įterptos nuorodos duomenų bazės struktūrą ir dabartinę (kurioje buvo atliktas atnaujinimas).

Struktūros neatitikimų analizė atliekama atnaujinimo programos grafinėje sąsajoje.

Deja, neatitikimus žiūri atlikėjo programuotojai tekstinis failasžurnalą, kurį vėliau išsiunčia klientas. Įdomus šios problemos sprendimo būdas siūlomas straipsnyje Duomenų bazės struktūros pokyčių valdymas. Ši užduotis nėra tokia kritiška; programuotojai gali patys parašyti scenarijų, kad struktūra pasiektų tikslą.

Programinės įrangos paketas yra paskirstytas licencijos sutartis Nemokama programinė įranga, galite atsisiųsti diegimo programą iš nuorodos

: Kaip tinkamai atnaujinti SQL serverį

O jei paklausčiau: „Ar visi naujinimai įdiegti jūsų SQL serveryje?

Kaip atsakyti į tokį klausimą? Pažiūrėkite į centrą Windows naujinimai? Mažai tikėtina, kad tai padės. Greičiausiai pamatysite kažką panašaus:

Tačiau, kaip bebūtų keista, tai nereiškia, kad SQL Server įdiegė naujausius naujinimus!

Norėdami sekti naujinimus specialiai SQL serveriui, Microsoft sukūrė specialų puslapį - . Pažymėkite:

Tačiau prieš eidami ten turime išsiaiškinti, kurią versiją įdiegėme dabar. Mums reikia tikslaus skaičiaus, įskaitant pastatymo numerį. Jį galite gauti žiūrėdami į sistemos kintamąjį @@Versija:

Prisiminkite šiuos skaičius – tik pagal juos galėsime nustatyti, kokius atnaujinimus jau esame įdiegę, o kurių ne. SQL serveris, skirtingai nei Operacinė sistema jis pats mums apie kiekvieną nepasakoja įdiegtas naujinimas. Todėl turėsite dirbti su numeriu @@Versija.

Dabar einame į SQL serverio naujinimo centrą ir ten matome patogų ženklą:

Čia mums reikia trijų dalykų:

  • Pirmiausia prisiminkime šį naujinimą atitinkantį versijos numerį. Baigę atnaujinimo procedūrą @@Versija mūsų SQL serveris turėtų pateikti būtent šį skaičių.
  • Antra, tikrai turėtumėte pažvelgti į kūrimo numerių, atitinkančių naujausio paslaugų paketo atnaujinimus, istoriją. Tai svarbu, nes kaupiamasis atnaujinimas bus įdiegta tik prieš tai buvusiame paslaugų pakete.
  • Ir trečia, naudinga pažvelgti į taisymų sąrašą, esantį paketiniame pakete. Administratorius turi žinoti apie šio paketo padarytus pakeitimus.

Žvelgdami į ankstesnių atnaujinimų versijų skaičių, pamatysime, kad skaičius skiriasi nuo mūsų Dabartinė versijaįtartinai didelis:

Taip yra dėl to, kad nesame įdiegę SP1. Pirmiausia turėsite jį įdiegti.

O dabar turime veiksmų planą:

  1. Įdiekite paslaugų paketą SP1.
  2. Įdiekite kaupiamojo naujinimo paketą CU4.

Veikim! Įdiegę SP1 patikrinkite numerį @@Versija. Nuo pradinio 2100.60 jis padidėjo iki 3000.0.

Paskutinis atnaujinimas: 2017-07-13

Norėdami pakeisti esamas lentelės eilutes, naudokite komandą UPDATE. Ji turi tokią formalią sintaksę:

ATNAUJINTI lentelės_pavadinimą SET1 stulpelis = vertė1, stulpelis2 = vertė2, ... stulpelisN = vertėN

Pavyzdžiui, padidinkime visų produktų kainą 5000:

ATNAUJINTI Produktų RINKINYS Kaina = Kaina + 5000

Pasinaudokime kriterijumi ir pakeiskime gamintojo pavadinimą iš „Samsung“ į „Samsung Inc.“:

UPDATE Products SET Gamintojas = "Samsung Inc." WHERE Gamintojas = "Samsung"

Sudėtingesnė užklausa – reikšmę „Apple“ lauke Gamintojas pakeiskite į „ Apple Inc.“ pirmose 2 eilutėse:

UPDATE Products SET Gamintojas = "Apple Inc." FROM (SELECT TOP 2 * FROM Products WHERE Manufacturer="Apple") AS Selected WHERE Produktai.Id = Selected.Id

Naudojant antrinę užklausą po raktažodį FROM nuskaito pirmas dvi eilutes, kuriose yra „Manufacturer="Apple". Šiam pasirinkimui bus nustatytas slapyvardis Pasirinktas. Pseudonimas nurodomas po AS operatoriumi.

Toliau pateikiama atnaujinimo sąlyga Produktai.Id = Selected.Id. Tai yra, iš tikrųjų mes susiduriame su dviem lentelėmis - Produktai ir Pasirinkta (kuri yra kilusi iš Produktų). Skiltyje Selected yra dvi pirmosios eilutės su Gamintojas="Apple". Produktuose - paprastai visos linijos. Ir naujinimas atliekamas tik toms eilutėms, kurios yra pasirinktame pasirinkime. Tai yra, jei produktų lentelėje yra dešimtys produktų su gamintojas Apple, tada atnaujinimas paveiks tik pirmuosius du iš jų.

Šiame straipsnyje parodysime, kaip atnaujinkite SQL Server 2008 R2 bandomąją versiją (Evaluation Edition) arba Express versijąį visą veikiančią SQL Standard arba Enterprise versiją. Galite susidurti su panašia problema, kai nėra kam išbandyti/kurti programinės įrangos produktasĮdiegta bandomoji SQL serverio versija. Dažnai atsitinka taip, kad pasibaigus tokiam testavimui/vertinimo laikotarpiui, priimamas sprendimas sistemą perkelti į gamybinę operaciją, kuriai būtina pereiti prie pilnų funkcijų turinčio SQL Server leidimo, bet jūs tai darote. nenorite iš naujo įdiegti DBVS.

Pastaba. Instrukcijos taip pat taikomos Microsoft SQL Server 2012 ir R2.

SQL Server SQL 2008 R2 (ir naujesnių versijų) bandomasis laikotarpis yra – 180 dienų. Pabaigus studijas bandomasis laikotarpis SQL serverio paslauga nustoja paleisti. SQL Server Express atveju yra ribojamas duomenų bazės dydis.

Licencijos licenciją galite atnaujinti tik iš naujo neįdiegę SQL serverio iš jaunesniojo leidimo į aukštesnįjį, pavyzdžiui: Evaluation Edition / Express Edition with Advanced Services -> Standard arba tiesiogiai į Enterprise.

Pasibaigus bandymo laikotarpiui, kai bandote atidaryti SQL Server Management Studio, pasirodo klaidos langas:

Vertinimo laikotarpis baigėsi. Norėdami gauti informacijos apie tai, kaip atnaujinti vertinimo programinę įrangą, eikite į http://www.microsoft.com/sql/howtobuy

MS SQL Server 2008 R2 leidimo naujinimas

Pirmoje dalyje išsiaiškinsime, kaip atnaujinti SQL serverio versiją naudojant licencijos raktą, įsigytą iš Microsoft ar partnerių.

Paleiskite SQL diegimo centrą (Pradėti -> Visos programos -> Microsoft SQL Server 2008 R2 -> Konfigūravimo įrankiai -> SQL serverio diegimo centras (64 bitų)).

Patarimas. Tą patį langą galima atidaryti paleidus setup.exe su diegimo diskas SQL serveris

Eikime į aptarnavimo skyrių ( Priežiūra) ir pasirinkite elementą leidimasPatobulinti(Redakcijos atnaujinimas). Bus paleistas leidimo atnaujinimo vedlys.

Ir vadovaudamiesi vedlio raginimais įveskite licenciją SQL raktas Serveris atitinkamame lauke.

Tada turite pasirinkti, kurią SQL serverio kopiją (pavyzdį) norite atnaujinti.

Galutinėje ataskaitoje bus nurodyta versijos atnaujinimo būsena ir nuoroda į išsamų teksto žurnalą.

Galite patikrinti, kurį SQL serverio leidimą naudojate SQL serverio valdymo studija dešiniuoju pelės mygtuku spustelėdami egzemplioriaus pavadinimą. Mūsų pavyzdyje tai yra „SQL Server Enterprise“.

Tą pačią operaciją galima atlikti nuo komandinė eilutė paleisdami failą setup.exe iš SQL serverio paskirstymo disko su nurodytais parametrais.

Setup.exe /Q /ACTION=leidimo atnaujinimas /INSTANCENAME= /PID=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx /IAcceptSQLServerLicenseTerms /Nurodykite pažangą

Patarimas. Atnaujindami leidimą iš SQL Server Express, turite papildomai įjungti SQL Server Agent paslaugą ir naudoti SQL Server Configuration Manager paslaugų parametrams nustatyti sąskaitą SQL Server Agent paslaugai.

Atnaujinkite į korporatyvinę SQL serverio įmonės versiją (tūrinė licencija)

Jei norite atnaujinti savo dabartinę SQL serverio versiją naudodami Microsoft bendrojo licencijavimo programą, nustebsite, kad Microsoft bendrojo licencijavimo paslaugų centras (MS VLSC) neturi SQL serverio raktų.

Faktas yra tas, kad raktas yra tiesiogiai integruotas į paskirstymą. Įdomiausia tai, kad VLSC palaikymas rekomenduoja pašalinti įdiegtą SQL serverį ir iš naujo įdiegti naudojant iso failą su SQL distribucija, atsisiųsta iš VLSC.

Laimei, vis tiek galima gauti teisingą raktą tiesiai iš platinimo


Duomenų atnaujinimas duomenų bazėje reiškia esamų lentelės įrašų verčių keitimą. Tokiu atveju galima ir keisti eilučių grupės laukų reikšmes (net ir visas lentelės eilutes), ir redaguoti lauko reikšmę atskiroje eilutėje.

SQL galite pakeisti įrašą duomenų bazės lentelėje naudodami komandą UPDATE. Minimaliausia duomenų atnaujinimo komanda atrodo taip:

ATNAUJINTI lentelė SET laukas = reikšmė

Čia ATNAUJINTI– komanda, nurodanti, kad prašoma atnaujinti duomenis;

stalo– lentelės, kurioje bus atlikti pakeitimai, pavadinimas;

NUSTATYTI– komanda, po kurios rašomi kableliais atskirti laukai su priskirtomis reikšmėmis;

lauke– lentelės laukas, kuriame bus atliktas pakeitimas;

prasmė– nauja reikšmė, kuri bus įvesta į lauką.


Pavyzdžiui, jei reikia nustatyti lauką visose lentelės eilutėse į nulį, galite paleisti šią užklausą:

ATNAUJINTI prekių SET kaina = 0

Tokiu atveju kainos laukas absoliučiai visose galimose lentelės eilutėse įgis 0 reikšmę.

Vienos vertės keitimas

Visų lentelės laukų reikšmių keitimas yra labai retas. Dažniausiai reikia keisti konkretaus įrašo reikšmę. Norėdami tai padaryti, eilutės su komanda UPDATE pabaigoje bus pridėta WHERE direktyva, kuri nurodo sąlygą, kuri nustato, kurioje eilutėje turi būti atlikta atnaujinimo operacija.

Yra lentelė:

Pavyzdžiui, turime atnaujinti produkto savikainą su mums žinoma jo verte num. Norėdami tai padaryti, paleiskite šią užklausą:

ATNAUJINTI prekių RINKINĖ kaina = 150 KUR skaičius = 2

Dabar prieš laukų keitimo operaciją bus pasirinkta eilutė, kuri tenkina sąlygą num = 2. Lentelėje yra tik viena tokia eilutė. Šiame sandėlyje kaina bus pakeista į reikšmę 150. Dėl to gausime lentelę su pasikeitusia prekės kaina.

Kelių eilučių keitimas su pasirinkimo sąlyga

Jei atsimenate visą užklausos sąlygų įvairovę, galite įsivaizduoti, kokie įvairūs gali būti pavyzdžiai. Todėl atnaujinimo užklausos gali būti vykdomos arba su viena eilute, arba su eilučių grupe, arba visomis lentelės eilutėmis. Viskas priklauso nuo užduoties, su kuria susiduriate, taip pat nuo to, kuriose lentelės eilutėse reikia atlikti atnaujinimo operacijas.

Pavyzdžiui, norime perpus sumažinti visų prekių, kurios šiuo metu kainuoja 100 ar daugiau, kainą. Prašymas:

ATNAUJINTI prekių SET kaina = kaina / 2 KUR kaina >= 100

Būklė KURčia yra taisyklė, pagal kurią bus atrenkami tik produktai, kurių kaina lygi 100 arba didesnė, o toms prekėms, kurių kaina mažesnė nei 100, užklausa neturės įtakos.

kaina = kaina / 2– formulė, pagal kurią bus skaičiuojama nauja prekių kaina. Nauja kaina bus parašytas lygus sena kaina padalintas iš dviejų.

Vykdydami tokią užklausą gausime lentelę su pakeistais įrašais:

Kelių eilučių laukų verčių atnaujinimas

Jei reikia atnaujinti kelis laukus vienu metu, visi laukai su jų reikšmėmis nurodomi po SET direktyvos, atskirti kableliais. Pavyzdžiui, prekės, kurios kodas 2, pavadinimą ir kainą turite pakeisti į „geležis“, kainuojančios 300:

ATNAUJINTI prekės SET title = "geležis" , price = 300 WHERE num = 2 !}

Ši užklausa kiekvienam atitinkančiam laukui iš eilės priskirs savo vertę. O sąlyga nurodys, kurioje eilutėje bus atlikti pakeitimai.


Toliau pateikiami pagrindiniai atnaujinimo operacijų tipai. Jų pagrindu generuojamos užklausos, skirtos išspręsti daugumą duomenų modifikavimo problemų kuriant naudojant SQL.

Dalintis