Felmeddelande vid skapande av SQL-db
Jag har skapat en databas i Visio 2000 SR1 med ett antal tabeller. Vid generering av scriptet ges inga felmeddelanden.
När jag kontrollerar scriptet i QUeryAnalyser får jag heller inga felmeddelanden, först när jag kört scriptet (i QA) kommer följande felmeddelande upp
The total row size (8533) for table 'svar' exceeds the maximum number of bytes per row (8060). Rows that exceed the maximum number of bytes will not be added.
Scriptet för den tabellen har följande struktur:
create table svar (
id_svar int identity not null,
id_svar_grupp int not null,
fraga varchar(500) null,
svar varchar(8000) null)
När jag sedan kontrollerar tabellen i Enterprise Managern så har tabellen skapats.
Vad är det som felmeddelandet egentligen säger till mig?
Kommer jag att kunna lagra data fullt ut i alla fall?
TIA /Uffe
Svara
Sv: Felmeddelande vid skapande av SQL-db
Maxlängden för en post är 8060 bytes. I din tabell så är postlängden drygt 8500 bytes.
Då du har varchar så går det ändå att skapa tabellen eftersom SQL server lagrar bara så många bytes som kolumnen innehåller.
Så länge som antalet bytes i varje post är mindre än 8060 så går det alttså bra men däremot om fraga innehåller 500 tecken och svar innehåller 8000 tecken så går det inte att lagra då den sammanlagda längden blir större än 8060.
Jag skulle nog minska längden på svar så att du kommer under 8060 och då kommer det aldrig att bli något problem.
Svara
Sv: Felmeddelande vid skapande av SQL-db
Tack!
Hade inte för mig att det fanns en maxlängd / rad
Svara
Sv: Felmeddelande vid skapande av SQL-db
SQL Server lagrar data på hårddisken i datasidor, vilka är 8 KB stora. En rad (av data i en tabell) kan inte delas på flera sidor, utan en rad kan maximalt vara så stor som en datasida. Med viss overhead (per rad) så innebär det att en rad kan max vara 8060 bytes stor. I ditt fall blir det dessutom lite mindre än 8060 (eftersom du använder variable kolumner samt tillåter null), så jag skulle nog rekommendera att hålla dig till max 8000 för att vara på den säkra sidan.
Svara
Sv: Felmeddelande vid skapande av SQL-db
Jag skulle föreslå att du ändrar svar till Text eller nText om det skall innehålla mycket text. Eller gör du många sökningar mot det?
Sedan skulle det ara intresant om du berättar hur din datastruktur ser ut. Dubbel lagrar du texten från frågan? Skulle det inte vara bättre att bara refera till frågan. Eller är detta facit tabellen?
Svara
Sv: Felmeddelande vid skapande av SQL-db
Jag skall använda den som en FAQ, dvs en admin skall mata in en vanlig fråga och sedan skriva in det svaret.
Detta skall bara presenteras "rakt upp och ner" enbert grupperat på kolumnen "id_svar_grupp". Det skall inte göras sökningar i fälten "fraga" och "svar"
Jag tror inte i dagsläget att det kommer att bli några romaner i svarsfältet, så tillsvidare gör jag som så att jag drar ner fältstorleken så den ligger en bra bit under 8000, för att vara på den säkra sidan.
(har inte jobbat med Text eller nText fält förut, känner mig lite osäker på hur jag skulle jobba med dessa (större) fält vid hämtning, lagring, stored proc, presentation av fältet på en asp-sida)
Tack för svaren i alla fall.
Svara