24. oktober 2002 - 14:20Der er
3 kommentarer og 1 løsning
Multiple text felter i samme tabel
Mojns.
Har hørt at flere text felter i én og samme tabel kan give problemer! Som sagt har jeg kun hørt flygtigt om det - men jeg kan ikke finde steder på nettet/bøger der siger at det giver problemer at fx. have 9 text felter i én tabel!! Hvad er jeres erfaringer med dette?? Kan det give problemer i forbindelse med selects, inserts, updates (al select, insert, update foregår fra .asp)??
Sagen er nemlig den, at der i min web-applikation findes 9 textarea's hvori brugere kan indtaste data! Dataene i én textarea kan snildt komme op på at indeholde 5000-15000 tegn - og idet SQL-server har en begrænsning på 8 K i row size er det noget fnidder fnadder!
Jeg er godt klar over at man kan begynde at kigge på designet af tabellerne i systemet, men dette vil jeg helst undgå idet komplektisteten i systemet er stor!
Jeg mener ikke at SQL-Server i sig selv har nogen problemer med TEXT felterne.
Jeg har først oplevet problemer når jeg kombinerede SQL-Server med IIS og ASP. Det jeg har oplevet er at TEXT felter skal være til sidst i RecordSettet og kun kan addresseres EEN gang i ASP.
D.v.s. at hvis du har en tabel der består af :
felt1 int felt2 TEXT felt3 int felt4 varchar(300) felt5 TEXT
Så skal du hente felterne sådan :
Select felt1, felt3, felt4, felt2, felt5 From tabel
Og så snart du har dannet RecordSettet (f.eks. ved navn RS) i ASP skal du lægge RS("felt2") og RS("felt5") over i nogle variabler og så bruge dem.
MS-SQL 2000 har også stadig nogle gamle fejl omkring VarChar. På et tidspunkt var største størrelse på VarChar 255 tegn. Så i en Eksport til en textfil i en DTS pakke tager kun de første 255 tegn med fra en VarChar - selv om feltet er større og indeholder mere data. Sådan er der nok mangle underlige gamle fejl i MS-SQL
Din betragtning med at TEXT felterne skal være sidst i recordsættet har jeg oxo hørt!
Jeg vil lave en test med dit forslag, specielt mht. at lægge recordsæt-felterne over i variabler - jeg bruger dem normalt direkte!
Jeg har snuset i min MSDN og kigget i SQL BOL, og der har jeg læst at hvis der ikke er mere end 8000 bytes i hvert TEXT felt kan man stadig lave normale SELECT, INSERT OG UPDATE operationer - uden man skal til at anvende READTEXT, WRITETEXT m.m. - er dette korrekt forstået?
Umiddelbart ser det ud til at virke OK! Dog bliver det spændende når applikationen sættes i produktion! Der kommer til at skulle arbejdes med store mængder data.. afhængig af antallet af brugere kan DB'en wrost case vokse med små 4 GB :-) *HYDR*
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.