Hoppa till innehållet

SQL Server

relationsdatabasen från Microsoft

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, 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, 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 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. 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:

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 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

Ordlista