Avatar billede scorp-d Nybegynder
27. september 2009 - 17:49 Der er 3 kommentarer og
1 løsning

Gemme data med dynamiske kolonner i MSSQL

Hej.

Jeg har fået den interessante problemstilling at gemme, fx. en excel-fil, i en MSSQL 2005 database, og kunne lave udtræk fra et almindeligt Windows program.

Der er 2 problemstillinger:

1)    Antallet af kolonner skal kunne variere alt efter hvor mange kolonner der er i datakilden.

2)    Kolonnens type varierer også fx tekst, billeder, Bool osv. og bestemmes af datakilden.

Har lavet en mulig løsning på problemet, men vil høre om der evt. er et standard-mønster på hvordan det laves?

Min løsning er at have en tabel som indeholder 'Række_ID'(int) , 'Kolonne_Type'(nvarchar) og 'Værdi'(ntext/image).

Så for at få værdierne fra én bestemt række i datakilden finder man alle rækker i ovenstående table med det pågældende 'Række_ID' og typecaster "Værdi" til 'Kolonne_Type'.

Jeg ved at denne løsning har en del ulemper, deriblandt at man, så vidt jeg ved, mister muligheden for at søge efter en bestemt 'Værdi' fordi feltet er et ntext/image felt.


Al hjælp vil være godt modtaget.


På forhånd tak
Scorp-D
Avatar billede arne_v Ekspert
27. september 2009 - 18:49 #1
Håbløs ide !

:-)

row,col,typ,val er en mulighed - og check lige om ikke NVARCHAR(MAX) giver lidt flere muligheder end NTEXT.

En anden mulighed var at gemme i XML format. SQLServer understøtter mig bekendt XPath.
Avatar billede scorp-d Nybegynder
27. september 2009 - 19:22 #2
Ville have brugt NVarchar(max), havde bare huskede forkert mht. om NText er større end NVarchar(max).

Er det ikke noget med at der kun er 1 tegn til forskel for NVarchar(max) og NText ?



Nå men tak for god og hurtig reposonse igen igen, og vil klart prøve og kigge på XPath/XQuery.
Hvis jeg ikke kan hutte ud af det må jeg fortsætte med row,col,typ,val.

Du kan bare smide et svar.
Avatar billede arne_v Ekspert
27. september 2009 - 21:41 #3
NVARCHAR(MAX) kan indeholde det samme som NTEXT, men string funktionerne virker på NVARCHAR(MAX) men ikke på NTEXT.

Hvis det er en stor database hvor performance er vigtigt så vil din DBA muligvis have nogle meninger omkring NVARCHAR(MAX) versus NTEXT, fordi de fysisk gemmes anderledes.
Avatar billede arne_v Ekspert
27. september 2009 - 21:41 #4
svar
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