# SQL Server

## Vad det är

SQL Server, som många team skriver MSSQL eller MS SQL, är ett system för att
hantera relationsdatabaser: ett serverprogram som håller data i tabeller,
upprätthåller reglerna mellan dem och svarar de applikationer som talar med det
på Transact-SQL, eller T-SQL, Microsofts dialekt av SQL. En klient ansluter till
en instans, som är en körande kopia av motorn, och gör sitt arbete i en av de
databaser som instansen rymmer. På disk består var och en av databaserna av
minst två filer, en för data och en för transaktionsloggen.

Kärnkomponenten är Database Engine, tjänsten som lagrar, bearbetar och skyddar
data. Den installeras på Windows eller Linux, i en Linuxcontainer eller på en
virtuell maskin. Stödet för Linux började med SQL Server 2017 (14.x), med samma
Database Engine som på Windows, och Red Hat Enterprise Linux och Ubuntu stöds i
varje version sedan dess. Samma motor ligger också under flera av Microsofts
drivna tjänster, bland dem Azure SQL Database, Azure SQL Managed Instance och
SQL database i Microsoft Fabric.

Versionerna namnges efter år och numreras internt: 2017 är 14.x, 2019 är 15.x,
2022 är 16.x, och SQL Server 2025, vars support började den 18 november 2025, är
17.x. Runt motorn finns fler tjänster. Integration Services (SSIS) bygger paket
för extrahering, transformering och inläsning med sikte på analysdatalager, och
SQL Server Agent kör jobb enligt en tidsplan. Från och med SQL Server 2025
samlas rapportering i egen drift under
[Power BI Report Server](https://learn.microsoft.com/en-us/power-bi/report-server/),
och Data Quality Services och Master Data Services försvinner ur produkten; 2022
och tidigare versioner behåller dem.

Utgåvorna drar de kommersiella gränserna. För SQL Server 2022 är de Enterprise,
Standard, Web, Express (kostnadsfri), Developer och Evaluation; de två sista har
hela uppsättningen funktioner från Enterprise, Developer licensierad enbart för
utvecklings- och testsystem och Evaluation i 180 dagar. SQL Server 2025 ritar om
listan: Web-utgåvan slutar med 2022, Developer delas i Enterprise Developer och
Standard Developer, och Express växer.

## Varför det spelar roll

Version och utgåva avgör tillsammans hur stor en server får bli, vilka
funktioner den har och hur länge Microsoft fortsätter att rätta den.

Storlek och funktioner kommer från utgåvan. Express i SQL Server 2022 använder
det lägre av en processorsockel eller fyra kärnor, högst 1 410 MB minne till
buffertpoolen, och rymmer högst 10 GB i varje databas. I SQL Server 2025 höjs
taket för Express till 50 GB, med samma gränser för beräkning och minne.
Standard i 2022 använder det lägre av fyra socklar eller 24 kärnor och 128 GB
buffertpool; i 2025 blir det 32 kärnor och 256 GB. Enterprise begränsas bara av
operativsystemet. SQL Server Agent följer med Enterprise, Standard och, i 2022,
Web; Express har den inte, så en kostnadsfri instans som behöver nattliga
säkerhetskopior behöver en schemaläggare utanför produkten.

Tidsplanen för rättelser kommer från versionen. Enligt Microsofts Fixed
Lifecycle Policy får varje version minst tio års support: fem år med allmän
support (mainstream support), med uppdateringar för funktion, prestanda,
skalbarhet och säkerhet, och fem år med utökad support (extended support), med
enbart säkerhetsuppdateringar. För SQL Server 2019 gällde den allmänna supporten
från november 2019 till slutet av februari 2025, och den utökade supporten
fortsätter till januari 2030. Microsofts lista över uppdateringar anger CU32,
från februari 2025, som den senaste kumulativa uppdateringen för 2019, med
säkerhetsversioner publicerade ovanpå den sedan dess. SQL Server 2022 har allmän
support till januari 2028 och utökad support till januari 2033; SQL Server 2025
går över till utökad support i januari 2031 och lämnar den i januari 2036.

Produkten når också personer som aldrig kör den i produktion, eftersom data
reser i dess format. En `.bak`-fil är en säkerhetskopia från SQL Server, och att
läsa en betyder att återställa den till en instans, så som ett av projekten
nedan gjorde.

## Så ser det ut i praktiken

Driften, läsningen och flytten därifrån är tre olika sidor av SQL Server, och
arbetet här har gällt alla tre.

På driftsidan, i en roll inom DevOps på ett medelstort techföretag,
[installerades PostgreSQL 14 och MS SQL Server 2019 på VPS-instanser med Ubuntu 20.04 LTS](/sv/portfolio/designed-deployed-and-maintained-10-postgresql-and-ms-13/),
tio databasservrar sammanlagt. Säkerhetskopieringen använde `pg_dump` för
PostgreSQL och jobb i SQL Server Agent för MS SQL, med regler för lagringstid
och kopior lagrade på annan plats. Prometheus och Grafana följde servrarna, och
resultatet blev 99,9 % upptid på alla tio.

På lässidan kom data till interna dashboards och kundvända Python-API:er från
ett fjärrbeläget datalager bakom ett IPsec-VPN, som komprimerade arkiv med
Parquet-, CSV- och `.bak`-filer.
[Pipelinen återställde varje säkerhetskopia till en lokal MSSQL-instans med `RESTORE DATABASE`](/sv/portfolio/designed-implemented-and-administered-6-etl-elt-pipelines-8/)
och validerade schemaintegriteten. Inläsningen till mellanlagringen använde
`bcp`, `psql` och SSIS beroende på källformatet, och procedurer i T-SQL och
PL/pgSQL rensade och berikade raderna innan de gick vidare till BigQuery. Sex
pipelines av det slaget minskade arbetet från över 3 timmar för hand till under
20 minuter för hela flödet och flyttade data från veckovis till daglig
synkronisering.

På sidan där man lämnar den låg en geografisk kartapplikation på en äldre
MSSQL-databas, och teamet
[flyttade den till PostgreSQL med tillägget PostGIS för inbyggd geospatial indexering](/sv/portfolio/improved-geographical-map-application-performance-by-10x-through-6/).
Den nya databasen fick GiST- och SP-GiST-index på geometri- och
geografikolumnerna, och dit fördes över 50 miljoner spatiala poster via ETL,
omvandlade till EPSG:4326. Där applikationen tidigare väntade 2,5 sekunder i
genomsnitt på ett svar räckte det efteråt med under 250 millisekunder, och
backendens CPU-belastning blev 65 % lägre.

## Var det går fel

Var och en av de här situationerna börjar vid en gräns: mellan versioner, mellan
maskiner eller mellan en säkerhetskopia och första gången den används.

**En säkerhetskopia reser framåt i version, och bara framåt.** En säkerhetskopia
kan återställas på den version av SQL Server som skrev den eller på en nyare. En
databas som återställs från en tidigare version uppgraderas automatiskt på vägen
in, och den uppgraderingen går bara åt ett håll. En `.bak`-fil som skrevs av en
server med 2022 behöver därför en instans med 2022 eller 2025, och en instans
med 2019 avvisar den. Kontrollera vilken version som skrev en fil innan du
bygger instansen som ska läsa den.

**Återställningen ber om mappar som den nya servern saknar.** En säkerhetskopia
minns var dess data- och loggfiler låg på källservern, och varje version av SQL
Server har sin egen standardsökväg. På en annan maskin listar du först de
logiska filnamnen och placerar sedan var och en med `MOVE`:

```sql
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';
```

**Säkerhetskopiorna hopar sig och ingen läser tillbaka en enda.** Microsofts
[egen sida om ämnet](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/back-up-and-restore-of-sql-server-databases)
säger det rakt ut: du har ingen strategi för återställning förrän du har testat
dina säkerhetskopior. Återställ en kopia på ett testsystem med jämna mellanrum
och kör `DBCC CHECKDB` mot den. Kontrollsummor i säkerhetskopiorna upptäcker
problem med själva mediet som de ligger på.

**En fil från massinläsning kommer fram utan sin tabell.** Filer som skrivs av
`bcp` bär raderna och ingenting om deras form: inget schema och ingen
formatinformation. När källtabellen har ändrats eller försvunnit kräver en ny
import en identisk tabelldefinition eller en formatfil. Microsoft rekommenderar
det inbyggda formatet (`-n`) mellan två instanser av SQL Server och
teckenformatet (`-c`) när data går över till ett annat system.

**Den kostnadsfria utgåvan blir full.** Express passar för att lära sig och för
små applikationer, och 10 GB per databas i 2022, eller 50 GB i 2025, är ett
litet utrymme för allt som sparar historik. Planera flytten till en licensierad
utgåva, och budgeten för den, innan databasen når taket.

**En gammal version fortsätter att köras på spåret med enbart
säkerhetsuppdateringar.** En server med SQL Server 2019 fungerar fortfarande,
och fram till januari 2030 får den bara säkerhetsuppdateringar. Instanserna i
det första projektet ovan körde 2019 mellan 2022 och 2024, inom den allmänna
supporten. Eftersom säkerhetskopior återställs framåt går vägen bort från en
sådan version via en återställning på en nyare instans och sedan ett test av
allt som talar med den.

## Läs mer

- [What is SQL Server?](https://learn.microsoft.com/en-us/sql/sql-server/what-is-sql-server)
  — Microsofts översikt över motorn, var den kan installeras och tjänsterna runt
  den.
- [SQL Server 2019 lifecycle](https://learn.microsoft.com/en-us/lifecycle/products/sql-server-2019)
  — datumen för start, allmän support och utökad support för den version som
  praktikavsnittet körde.
- [Editions and supported features of SQL Server 2025](https://learn.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql-server-2025)
  — gränserna för beräkning, minne och databasstorlek per utgåva, med noter om
  vad som har ändrats sedan 2022.
- [What is SQL Server on Linux?](https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-overview)
  — vilken version stödet för Linux började med och vilka distributioner varje
  version körs på.
- [RESTORE statements (Transact-SQL)](https://learn.microsoft.com/en-us/sql/t-sql/statements/restore-statements-transact-sql)
  — hela syntaxen, `MOVE` och `FILELISTONLY`, och reglerna för att återställa
  mellan versioner.
- [bcp utility](https://learn.microsoft.com/en-us/sql/tools/bcp-utility)
  — massinläsning in i och ut ur Database Engine, dataformat och formatfiler.

<https://engineer.company/sv/glossary/sql-server/>
