Spara långa texter i SQL Server

Vi har jobbat med SQL Server nu i några år och gillar databas-typen från Microsoft. Den är robust, fungerar i alla väder och ger många trevliga verktyg att jobba med.

När man ska spara längre texter än maxstorleken för ett datapage på 8000 bytes, är det dock en del saker man bör tänka på. Speciellt om man jobbar på SQL Server 2000 och funderar på att uppgradera till SQL Server 2005 i framtiden.

Magnus Ahlqvist ger i en tråd på IDGs forum en bra förklaring till hur datapages fungerar och att storleken för index är 900 Bytes. Läs denna för att få lite insikt i hur prestandafrågor rörande textstorleken.

Vidare så kollar vi på vad det finns för alternativ för att spara texter på SQL Server 2000. Vi har varchar (max 8000 tecken - ej Unicode), nvarchar (4000 tecken - Unicode), text (2 GB data) och ntext (2GB data Unicode).

Så vill vi spara texter över 8000 Bytes på SQL Server 2000 så måste vi använda text eller ntext. Dessa datatyper sparar dock inte texter över 8000 Bytes direkt i dataraden utan endast en minnespekare till informationen. Läs mer på SearchSQLServer vilka problem detta kan leda till. Många funktioner som replace fungerar inte på datatyper som text eller ntext. Det finns dock lösningar på hur man kan köra replace på dessa typer också.

Så rådet är att använda varchar eller nvarchar i största möjliga mån. I SQL Server 2005 har ju dessa datatyper utökats med MAX-alternativet, och de kan innehålla mer data än 8000 Bytes.

Typerna text och ntext är på väg bort från SQL Server och kommer inte att stödjas i framtida versioner. Läs mer på SQL Server Helper som förklarar läget ytterligare.