Hopp til innhold

SQL Server

Microsofts relasjonsdatabase

Hva det er

SQL Server, som mange team skriver som MSSQL eller MS SQL, er et relasjonelt databasehåndteringssystem: et serverprogram som holder data i tabeller, håndhever reglene mellom dem og svarer applikasjonene som snakker med det på Transact-SQL, eller T-SQL, Microsofts dialekt av SQL. En klient kobler seg til en instans, som er én kjørende kopi av motoren, og gjør jobben sin inne i en av databasene instansen er vert for. På disk består hver av dem av minst to filer, én for dataene og én for transaksjonsloggen.

Kjernen er Database Engine, tjenesten som lagrer, behandler og sikrer dataene. Den kan installeres på Windows eller Linux, i en Linux-container eller på en virtuell maskin. Støtten for Linux kom med SQL Server 2017 (14.x), med den samme Database Engine som på Windows, og Red Hat Enterprise Linux og Ubuntu har vært støttet i hver versjon siden. Den samme motoren ligger også under flere av Microsofts driftede tjenester, bl.a. Azure SQL Database, Azure SQL Managed Instance og SQL database i Microsoft Fabric.

Versjonene får navn etter årstall og et internt nummer: 2017 er 14.x, 2019 er 15.x, 2022 er 16.x, og SQL Server 2025, som fikk støtte fra 18. november 2025, er 17.x. Rundt motoren ligger flere tjenester. Integration Services (SSIS) bygger pakker for uttrekk, transformasjon og innlasting rettet mot datavarehus, og SQL Server Agent kjører jobber etter en timeplan. Fra og med SQL Server 2025 er rapportering på egne servere samlet i Power BI Report Server, og Data Quality Services og Master Data Services forsvinner fra produktet. Versjon 2022 og tidligere beholder dem.

Utgavene trekker de kommersielle grensene. For SQL Server 2022 er de Enterprise, Standard, Web, Express (gratis), Developer og Evaluation. De to siste har hele funksjonssettet til Enterprise, men Developer er lisensiert bare for utviklings- og testsystemer, og Evaluation gjelder i 180 dager. SQL Server 2025 tegner listen på nytt: Web-utgaven slutter med 2022, Developer deles i Enterprise Developer og Standard Developer, og Express blir større.

Hvorfor det er viktig

Versjon og utgave avgjør til sammen hvor stor en server kan bli, hvilke funksjoner den har, og hvor lenge Microsoft fortsetter å rette den.

Størrelse og funksjoner følger utgaven. Express i SQL Server 2022 bruker den minste av én sokkel eller fire kjerner, høyst 1 410 MB minne til bufferpoolen og høyst 10 GB per database. I SQL Server 2025 hever Express taket til 50 GB, med de samme grensene for regnekraft og minne. Standard i 2022 bruker den minste av fire sokler eller 24 kjerner og 128 GB bufferpool, og i 2025 blir det 32 kjerner og 256 GB. Enterprise begrenses bare av operativsystemet. SQL Server Agent følger med Enterprise, Standard og, i 2022, Web. Express er uten den, så en gratis instans som trenger nattlige sikkerhetskopier, trenger en planlegger utenfor produktet.

Tidsplanen for rettelser følger versjonen. Etter Microsofts Fixed Lifecycle Policy får hver versjon minst ti års støtte: fem år med ordinær støtte, med oppdateringer for funksjoner, ytelse, skalerbarhet og sikkerhet, og fem år med utvidet støtte, med sikkerhetsoppdateringer alene. For SQL Server 2019 varte den ordinære støtten fra november 2019 til utgangen av februar 2025, og den utvidede fortsetter til januar 2030. Microsofts oversikt over oppdateringer viser CU32 fra februar 2025 som den siste kumulative oppdateringen for 2019, med sikkerhetsutgivelser lagt oppå den siden. SQL Server 2022 har ordinær støtte til januar 2028 og utvidet støtte til januar 2033. SQL Server 2025 går over til utvidet støtte i januar 2031 og ut av den i januar 2036.

Produktet når også folk som aldri kjører det i produksjon, fordi data reiser i formatene dets. En .bak-fil er en sikkerhetskopi fra SQL Server, og å lese den betyr å gjenopprette den i en instans, slik ett av prosjektene nedenfor gjorde.

Slik ser det ut i praksis

SQL Server har vært noe å drifte, noe å lese fra og noe å forlate i arbeidet her.

Først driften. I en DevOps-rolle i et mellomstort teknologiselskap ble PostgreSQL 14 og MS SQL Server 2019 installert på VPS-instanser med Ubuntu 20.04 LTS, ti databaseservere i alt. Sikkerhetskopieringen brukte pg_dump for PostgreSQL og jobber i SQL Server Agent for MS SQL, med regler for oppbevaring og ekstern lagring. Prometheus og Grafana fulgte med på serverne, og resultatet var 99,9 % oppetid på alle ti.

Så lesingen. Data til interne dashbord og til Python-API-er for kunder kom fra et eksternt datavarehus bak et IPsec-VPN, som komprimerte arkiver med Parquet-, CSV- og .bak-filer. Pipelinen gjenopprettet hver sikkerhetskopi i en lokal MSSQL Server-instans med RESTORE DATABASE og kontrollerte at skjemaet var intakt. Innlastingen til staging brukte bcp, psql og SSIS etter kildeformatet, og prosedyrer i T-SQL og PL/pgSQL renset og beriket radene før de gikk videre til BigQuery. Med gjenopprettingen automatisert sammen med resten tok en hel kjøring av de seks pipelinene under 20 minutter, der arbeidet for hånd hadde tatt mer enn 3 timer, og dataene ble synkronisert daglig i stedet for ukentlig.

Til slutt utgangen. En geografisk kartapplikasjon sto på en eldre MSSQL-database, og teamet flyttet den til PostgreSQL med PostGIS-utvidelsen for innebygd geospatial indeksering. Mer enn 50 millioner romlige poster gikk gjennom ETL til EPSG:4326, GiST- og SP-GiST-indekser ble lagt på geometri- og geografikolonnene, og den gjennomsnittlige svartiden for romlige spørringer, 2,5 sekunder i SQL Server, kom under 250 millisekunder i PostgreSQL, mens CPU-belastningen i backend gikk ned med 65 %.

Hvor det går galt

Hver av disse begynner ved en grense: mellom versjoner, mellom maskiner, eller mellom en sikkerhetskopi og første gang noen bruker den.

En sikkerhetskopi som bare kan flytte framover i versjon. En sikkerhetskopi kan gjenopprettes på den versjonen av SQL Server som skrev den, eller på en nyere. En database som gjenopprettes fra en eldre versjon, oppgraderes automatisk på veien inn, og den oppgraderingen går bare én vei. En .bak-fil skrevet av en 2022-server trenger derfor en instans på 2022 eller 2025, og en instans på 2019 avviser den. Sjekk hvilken versjon som skrev filen, før du bygger instansen som skal lese den.

En gjenoppretting som ber om mapper den nye serveren mangler. En sikkerhetskopi husker hvor data- og loggfilene lå på kildeserveren, og hver versjon av SQL Server har sin egen standardsti. På en annen maskin lister du først de logiske filnavnene og plasserer så hver av dem med MOVE:

RESTORE FILELISTONLY
FROM DISK = '/srv/incoming/sales.bak';

RESTORE DATABASE Sales
FROM DISK = '/srv/incoming/sales.bak'
WITH MOVE 'Sales_Data' TO '/srv/mssql/data/Sales.mdf',
     MOVE 'Sales_Log' TO '/srv/mssql/data/Sales_log.ldf';

Sikkerhetskopier som hoper seg opp mens ingen leser dem tilbake. Microsofts egen side om emnet sier det rett ut: en strategi for gjenoppretting har du først når du har testet sikkerhetskopiene. Gjenopprett en kopi på et testsystem etter en fast plan, og kjør DBCC CHECKDB mot den. Kontrollsummer i sikkerhetskopien avslører feil i selve lagringsmediet.

En bulkkopifil som kommer uten tabellen sin. Filer skrevet av bcp har radene og ingenting om formen deres, verken skjema eller formatinformasjon. Når kildetabellen er endret eller borte, krever en ny import en identisk tabelldefinisjon eller en formatfil. Microsoft anbefaler det native formatet (-n) mellom to SQL Server-instanser og tegnformat (-c) når dataene skal over i et annet system.

En gratisutgave som blir full. Express passer til læring og små applikasjoner, og 10 GB per database i 2022, eller 50 GB i 2025, er lite for noe som tar vare på historikk. Planlegg overgangen til en lisensiert utgave, og budsjettet for den, før databasen når taket.

En gammel versjon som lever videre på sikkerhetsoppdateringer. En server på SQL Server 2019 virker fortsatt, og fram til januar 2030 får den sikkerhetsoppdateringer og ingenting annet. Instansene i det første prosjektet over kjørte 2019 mellom 2022 og 2024, innenfor den ordinære støtten. Siden sikkerhetskopier bare kan gjenopprettes framover, går veien bort fra en slik versjon gjennom en gjenoppretting på en nyere instans, og deretter en test av alt som snakker med den.

Les mer

Ordliste