Avatar billede krogstrup Nybegynder
26. september 2007 - 23:57 Der er 6 kommentarer og
1 løsning

Mærkelige problemer med en slags overflow ved udtræk fra MS SQL

Jeg har fået et problem som jeg aldrig har stiftet bekendtskab med før.

Som udgangspunkt opretter jeg et ganske normalt recordsset hvor jeg henter data fra følgende felter:

id = int
product_id = int
site_id = int
productname = nvarchar(4000)
description = nvarchar(MAX)
seo_title = nvarchar(4000)
seo_description = nvarchar(4000)
seo_keywords = nvarchar(4000)
is_active = bit

Mit problem er at jeg ganske enkelt ikke får data ud i alle mine variabler selv om jeg positivt VED at der er data i disse felter i databasen.

Ændrer jeg derimod datatypen for 'description' fra at være nvarchar(MAX) til nvarchar(4000) i stedet, så får jeg pludselig indhold i alle mine variabler.

Det virker altså som om at jeg rammer et loft for hvor mange data mit recordsset kan håndtere. Men det mærkelige er bare at feltet 'description' i mit test scenarie indeholdet ganske få ord - men alligevel virker det som om at indlæsning af feltet pga datatype MAX får det hele til at crashe...

Kan nogen sige nogen kloge ord om mit scenarie og problem - og evt. hvordan jeg løser det ?

Problemet er at jeg ikke kan nøjes med nvarchar(4000) - jeg skal som min. kunne sætte length til f.eks. 200.000 tegn + at jeg SKAL bruge unicode support i den datatype jeg vælger !
Avatar billede kalp Novice
27. september 2007 - 00:23 #1
du skal slet ikke bruge nvarchar..

du skal bruge "text" eller "ntext"
Avatar billede kalp Novice
27. september 2007 - 00:24 #2
kan også være det kaldes "Memo" datatypen.. ved ikke hvilken database du arbejder med.


Tror desuden max. på nvarchar er 400.
Avatar billede neoman Novice
27. september 2007 - 00:36 #3
Avatar billede neoman Novice
27. september 2007 - 00:37 #4
Fra samme sted : "Yes, VARCHAR(MAX), NVARCHAR(MAX) and VARBINARY(MAX) will replace the TEXT, NTEXT and IMAGE data types, respectively.  TEXT, NTEXT and IMAGE data types will be removed in the future version of Microsoft SQL Server.  Avoid using these data types when using SQL Server 2005 and use VARCHAR(MAX), NVARCHAR(MAX) and VARBINARY(MAX)  instead."

Såfremt du bruger 2005 altså ! :)
Avatar billede neoman Novice
27. september 2007 - 00:50 #5
Og her en med lignende problem http://www.thescripts.com/forum/thread589355.html derinde er der et link til løsningen, men det må du nok selv bedømme
Avatar billede krogstrup Nybegynder
27. september 2007 - 10:25 #6
kalp >
Som neoman ganske rigtigt skriver så udgår datatypen text fra MS SQL 2005 server - derfor har jeg helt bevidst valgt at bruge nvarchar i stedet. Og max for denne datatype er 4000, ikke 400.

neoman >
TAK TAK TAK - jeg har nu skiftet til en SQL Native Client connection string og nu spiller alt perfekt !

Smider du et svar neoman ?

Til andre der måtte opleve samme problem og finde denne tråd kan jeg oplyse at jeg har brugt følgende connection string:

Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

som jeg fandt her:
http://www.connectionstrings.com/?carrier=sqlserver2005
Avatar billede neoman Novice
27. september 2007 - 19:38 #7
det var dejligt at høre at det kører. here we go :)
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
Kurser inden for grundlæggende programmering

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