sql >> Database teknologi >  >> RDS >> Database

Brug af arbejdsmappe til kildekontroldatabase

Denne artikel er en gennemgang af, hvordan du bruger muligheden for arbejdsmappe til kildekontrol til at administrere SQL Server-databaser.

I denne artikel understreger jeg også nogle af fordelene og begrænsningerne ved at bruge en arbejdsmappe sammenlignet med andre tilgængelige muligheder for at bruge med kildekontrol.

Lad os diskutere nogle nøglebegreber, før vi dykker ned i de tekniske detaljer i denne artikel.

Nøglebegreber

Hvad er kildekontrol

Kildekontrol er et system eller (en del af den bedste software) praksis, som holder styr på alle ændringer i koden, som udviklere har foretaget.

Hvorfor kildekontrol er nødvendig

Applikationskoden, der er skrevet af udviklerne, skal gemmes fra tid til anden på en sådan måde, at alle de ændringer, der er foretaget af enhver udvikler, ikke kun kan spores tilbage, men også vendes tilbage, hvis det kræves.

Af denne grund er applikationskoden sat under kildekontrol for at sikre, at historikken for alle ændringerne sammen med kommentarer er velholdt, plus der er mange andre fordele ved at bruge kildekontrol, som ligger uden for denne artikels omfang.

Kildekontrol vs. versionskontrol

Der er ingen forskel mellem kildekontrol og versionskontrol, og for det meste bruges disse to udtryk frit i flæng.

Sætter vi databaser under kildekontrol

Ligesom applikationskode skal databaseobjekterne såsom tabeller, visninger, lagrede procedurer osv. også være versionsstyret. Metoden til at sætte databaseobjekter under kildekontrol er dog en smule og i nogle tilfælde helt anderledes end når applikationskoden sættes under kildekontrol.

Eksempel på versionskontrollerende database

Antag, at du opretter en prøvedatabase kaldet "Biler" i henhold til forretningskrav.

Derefter opretter du en tabel kaldet "Bil" med CarId og CarName kolonner for at opfylde et andet krav.

I dit fravær får en anden udvikler tildelt en opgave for at tilføje CarType kolonne til "Bil"-tabellen.

Han beslutter sig for at fjerne CarName kolonne, fordi den ikke er påkrævet, og erstat den med CarType kolonne.

Du kommer tilbage efter lang tid og er overrasket over at se, at dit CarName kolonnen mangler ikke kun, men er også erstattet med CarType kolonne.

Nu kan du ikke huske den oprindelige datatype og længde, du valgte for CarName medmindre du gennemgår hele sættet af forretningskrav.

Vent et øjeblik! Dette problem kan nemt løses, hvis du har overvejet at bruge kildekontrol til din database i første omgang. Så kan du nemt se den første ændring, du nogensinde har foretaget, som indeholder kolonnedefinitionen og derefter den anden ændring udført af en anden udvikler.

Så du og den anden udvikler sidder sammen og gennemgår de historiske ændringer i databasen (objektet) ved hjælp af kildekontrol, som holder styr på hver enkelt ændring foretaget af enhver udvikler i databasen.

Dette er illustreret som følger:

Vigtigste brug af kildekontrol

En af hovedårsagerne til at bruge kildekontrol er at være i stand til at vedligeholde flere versioner af koden på samme tid ved at oprette følgende grene af koden:

  1. Dev (udviklingsgren)
  2. Test (testgren)
  3. QA (QA branch)
  4. Prod (Produktionsgren)

De tekniske detaljer ved oprettelse af Dev-, Test-, QA- og Produktionsgrene fra kildekontrol er uden for denne artikels omfang.

Forudsætninger

Denne artikel er bedst egnet til de læsere, der opfylder følgende krav:

Grundlæggende kendskab til T-SQL

Du skal have en vis grundlæggende T-SQL viden for at oprette, forespørge og ændre databaseobjekter såsom tabeller, visninger og lagret procedure.

Databaseudviklingsværktøjer

Du skal have SSMS (SQL Server Management Studio) eller dbForge Studio til SQL Server installeret på din maskine for at oprette og administrere databaser og deres objekter.

Tilgængelighed af arbejdsmappedatakilde

Selvom enhver kildekontrol, der tilbyder muligheden for arbejdsmappe, er fin, anbefales det at bruge dbForge Source Control til at følge alle trinene i gennemgangen i denne artikel.

Kildekontrol for arbejdsmappe

Arbejdsmappe med begrænset funktionalitet til versionsstyring af databaseobjekter kan bruges ligesom andre kildekontrolsystemer såsom TFS, Git osv.

En arbejdsmappe indeholder simpelthen SQL-scriptfiler, der bruges til at oprette og administrere databaseobjekter.

Hvornår skal du bruge Working Folder

Antag, at du vil oprette en database og dens relaterede objekter fra bunden, men endnu ikke er sikker på, hvilken kildekontrol dit team skal bruge i sidste ende. Så er det bedre at begynde med funktionsmappens kildekontrolindstilling.

En anden grund kan være, når du blot ønsker at gemme databasens aktuelle tilstand og ikke er interesseret i at holde styr på de historiske ændringer, så er en arbejdsmappe en god kandidat til at blive brugt som kildekontrol.

Begrænsning af arbejdsmappe

Working Folder til versionskontrol databaseobjekter er begrænset med hensyn til at beholde den seneste version af databasen og dens objekter, og der er ingen måde at spore ændringerne tilbage eller gendanne dem.

Så du skal være forsigtig, når du bruger Working Folder som din kildekontrolindstilling, fordi den ikke kan vise dig alle de ændringer, der er foretaget i databasen og dens objekter fra tid til anden.

Gennemgang:Sammenkædning af database til arbejdsmappe

Lad os gennemgå trinene for at linke din database til en arbejdsmappe ved hjælp af kildekontrol.

Krav til tilføjelse af bog og bogtype

Du har modtaget interne krav til at oprette en testdatabase kaldet "SQLBookShopV2", som indeholder følgende to tabeller:

  1. Book
  2. Bogtype

Databasen kræver ikke nødvendigvis en kildekontrol på dette tidspunkt, og det er ikke vigtigt at holde styr på alle de ændringer, der er foretaget.

Tjek kravene

Det er ofte en god praksis at dobbelttjekke kravene, før du bruger en arbejdsmappe. En arbejdsmappe er bedst egnet, hvis du bliver bedt om at oprette en database med følgende krav:

  1. Testdatabase eller databaseprototype er påkrævet
  2. Databaseændringshistorik er ikke obligatorisk
  3. Beslutningen om, hvilken kildekontrol der i sidste ende skal bruges, er endnu ikke besluttet

Opsæt arbejdsmappe

Det første trin er at afsætte en mappe, hvor dine testdatabasescripts vil ligge, når du begynder at tjekke din databasekode ind i arbejdsmappen.

Opret en ny mappe kaldet "SQLBookShopV2 Scripts" under C Drive.

Opsætning af SQLBookShopV2-eksempeldatabase

Åbn dbForge Studio til SQL Server, og klik på "Ny database" fra menuen Database:

Skriv "SQLBookShopV2" i navnet på databasen, og klik på knappen "Anvend ændringer" nederst i vinduet:

Link database til arbejdsmappe

Det er bedre at få databasen forbundet med kildekontrollen lige efter at have oprettet den.

Højreklik på databasen (SQLBookShopV2) og vælg Kildekontrol à Link Database til Kildekontrol menupunkt:

Find den tidligere oprettede arbejdsmappe for at forbinde den med databasen:

Du kan vælge din ønskede databaseudviklingsmodel. Vi vælger den delte databaseudviklingsmodel:

Tjek det lille kildekontrolikon ved siden af ​​databasen, som bekræfter, at databasen er blevet linket til arbejdsmappens kildekontrol:

Opret bogbord

Højreklik på Tabeller og klik derefter på Ny tabel og opret bogtabel ved hjælp af følgende kode og anvend ændringer:

OPRET TABEL SQLBookShopV2.dbo.Book ( BookId INT IDENTITY ,BookTitle VARCHAR(50) NOT NULL ,Noter VARCHAR(200) ,CONSTRAINT PK_Book_BookId PRIMÆR NØGLE KLYNGET (BookId))GO

Bekræft databasekodeændringer

Da vi har oprettet en ny tabel i databasen, skal disse lokale ændringer opfanges af kildekontrol for at blive gemt.

Åbn Source Control Manager (som viser de seneste ændringer, der skal gemmes) ved at højreklikke på databasen og derefter klikke på Kilde à Vis kildekontrolstyring

Klik på Bekræft for at tjekke ind i Working Folder Source Control:

Tjek af arbejdsmappe

Gå til din arbejdsmappe og se tabelobjektet gemt der som et resultat af den seneste commit:

Opret bogtypetabel

Opret en anden tabel BookType ved hjælp af følgende kode:

OPRET TABEL SQLBookShopV2.dbo.BooKType ( BookTypeId INT IDENTITY , Name VARCHAR(50) NULL , Detail VARCHAR(200) NULL , CONSTRAINT PK_BooKType_BookTypeId PRIMÆR NØGLE KLUSTERET (BOG)

Tilføj tabel til kildekontrol

Tilføj den nyoprettede tabel til kildekontrollen ved at bruge samme metode som tidligere nævnt, og tjek derefter arbejdsmappen for at se, at begge tabeller er der:

Tillykke! Du har linket din database til kildestyringen for arbejdsmappen.

Forholdsregler for arbejdsmappe

Husk en arbejdsmappe i sin rene form, da en kildekontrol er ligesom en almindelig Windows-mappe, og hvis den bliver ændret eksternt, kan den ikke længere huske sin seneste tilstand.

Hvis vi f.eks. sletter Book.sql-koden fra arbejdsmappen og derefter tjekker for ændringer ved hjælp af Source Control Manager, bliver vi nødt til at tilføje bogtabelkoden igen i arbejdsmappen.

Ansvaret for at sikre arbejdsmappen ligger på udviklernes skuldre snarere end kildekoden (i dens originale form), medmindre du nøje følger den løsning, som har vist sig at være vellykket.

Ting at gøre

Du kan nu nemt placere dine databaseobjekter ved at bruge kildestyringsindstillingen Working Folder:

  1. Prøv venligst at oprette en anden database ved at linke bogen tabel med BookType tabel på en sådan måde, at BookTypeId primære nøgle for BookType tabellen videregives som BookTypeId fremmednøglekolonnen i bogen tabel efter brug af arbejdsmappekildekontrol.
  2. Prøv venligst at oprette en lagret procedure kaldet AddBook for at tilføje en ny bog til bogen tabel efter at have linket din database med arbejdsmappekildekontrol.
  3. Prøv venligst at oprette en databasevisning Bøger for at se listen over alle bøgerne med deres typer og kontrollere alle ændringerne i Working Folders kildekontrol.

Yderligere læsning:

Sporing af databaseændringer ved hjælp af arbejdsmappekildekontrol

Nyttigt værktøj:

dbForge Source Control – kraftfuld SSMS-tilføjelse til styring af SQL Server-databaseændringer i kildekontrol.


  1. Hvad er det maksimale antal tegn for NVARCHAR(MAX)?

  2. Genererer sql-indsæt til Oracle

  3. C# parametriserede forespørgsler til Oracle - alvorlig og farlig fejl!

  4. ST_HexagonGrid geomvektor for at finde alle punkter