Avatar billede netsrac Praktikant
11. oktober 2001 - 16:28 Der er 14 kommentarer og
2 løsninger

Datatype til tekst på mere end 8000 karakterer ?

Sidder og administrerer en MS SQL database fra Access og det ser ud til at man ikke kan oprette et felt med plads til mere end 8000 tegn ? Hvor er notat feltet fra Access ?
Avatar billede pierrehusted Nybegynder
11. oktober 2001 - 16:30 #1
text eller ntext
Avatar billede pierrehusted Nybegynder
11. oktober 2001 - 16:31 #2
Du skal bare passe lidt på med dem.

- Helst ikke mere end ét i hver tabel.
- Det skal helst hentes sidst i recordsets.
- Når først du har hentet værdien fra recordset er den der ikke længere (læg den i en variabel).
Avatar billede bennytordrup Nybegynder
11. oktober 2001 - 16:31 #3
Det hedder text eller ntext

Fra Books Online (SQL Server 2000)

Character Strings
char

Fixed-length non-Unicode character data with a maximum length of 8,000 characters.

varchar

Variable-length non-Unicode data with a maximum of 8,000 characters.

text

Variable-length non-Unicode data with a maximum length of 2^31 - 1 (2,147,483,647) characters.

Unicode Character Strings
nchar

Fixed-length Unicode data with a maximum length of 4,000 characters.

nvarchar

Variable-length Unicode data with a maximum length of 4,000 characters. sysname is a system-supplied user-defined data type that is functionally equivalent to nvarchar(128) and is used to reference database object names.

ntext

Variable-length Unicode data with a maximum length of 2^30 - 1 (1,073,741,823) characters.

Avatar billede bennytordrup Nybegynder
11. oktober 2001 - 16:48 #4
>pierrehusted: Hvorfor skal de helst hentes sidst i recordsets?
Avatar billede pierrehusted Nybegynder
11. oktober 2001 - 16:53 #5
Det har bare været min erfaring. Det er vist en bug i SQL Server.

Hvis man ikke har feltet liggende sidst i sit recordset, så ødelægger den noglegange de efterfølgende felter.
Avatar billede bennytordrup Nybegynder
11. oktober 2001 - 16:56 #6
Hvilken version af SQL Server?
Avatar billede pierrehusted Nybegynder
11. oktober 2001 - 16:58 #7
7.0

Har ikke lagt mærke til om problemet også er der i 2000...  Jeg har jo vendet mig til at omgå det.
Avatar billede bennytordrup Nybegynder
11. oktober 2001 - 17:00 #8
Vi kører på SQL Server 2000 og bruger memo-felter (ntext AFAIR) alle mulige steder i tabeller og forespørgsler. Så vidt jeg ved har vi ikke haft nogle felter efterfølgende, som har været smadret.

Men den er jo god at have i baghovedet, hvis nu :-/
Avatar billede pierrehusted Nybegynder
11. oktober 2001 - 17:09 #9
Memo felter ???  I SQL Server 2000 ???  Det er der da ikke i min SQL 2k.

Felterne i tabellen sker der ikke noget med.

Nu jeg forsøger at forklare problemet slår det mig at det da nok er i kombinationen mellem SQL Server og IIS.

Hvis jeg f.eks. har den her ASP kode :

<%
SQLStr = \"Select varcharfelt, intfelt, textfelt from tabel\"
Set liste = Conn.Execute(SQLStr)

response.write(liste(\"varcharfelt\") & \"<br>\")
response.write(liste(\"intfelt\") & \"<br>\")
response.write(liste(\"textfelt\") & \"<br>\")
%>

så går det fint.

Men hvis koden er sådan her :

<%
SQLStr = \"Select varcharfelt, intfelt, textfelt from tabel\"
Set liste = Conn.Execute(SQLStr)

response.write(liste(\"varcharfelt\") & \"<br>\")
response.write(liste(\"textfelt\") & \"<br>\")
response.write(liste(\"intfelt\") & \"<br>\")
%>

Så går det galt.
Avatar billede netsrac Praktikant
11. oktober 2001 - 19:56 #10
Ehm, når jeg vælger ntext, skriver den 16 i length, så kan den vel kun indeholde 16 karakterer eller ?
Avatar billede netsrac Praktikant
11. oktober 2001 - 20:01 #11
Som et lille side spm. kunne i vel ikke fortælle mig hvilken sql query jeg skal fyre af for at ændre et felt til text ?
Avatar billede bennytordrup Nybegynder
12. oktober 2001 - 08:41 #12
ALTER Table tblX
  ALTER Column ColY text
Avatar billede bennytordrup Nybegynder
12. oktober 2001 - 08:47 #13
Med hensyn til de 16 i length, så er det ikke en begrænsning på 16 tegn. Den bliver tilsyneladende ikke videreført til SQL 2K (der er i hvert fald ikke noget angivet i Query Analyser). Og jeg kan også indtaste mere end 16 tegn (også gennem Access)
Avatar billede pierrehusted Nybegynder
14. oktober 2001 - 14:31 #14
16 i length er den minimum størrelse den optager i databasen. Det er den størrelse et helt tomt felt optager - de 16 bliver brugt til at opbevare størrelse og sådan noget.
Avatar billede pierrehusted Nybegynder
14. oktober 2001 - 14:34 #15
TEXT kan som benny.tordrup skriver indeholde 2,147,483,647 tegn og NTEXT 1,073,741,823 tegn.
Avatar billede netsrac Praktikant
14. oktober 2001 - 14:34 #16
Sorry, havde lige glemt spm. så er der lidt point til jer :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester