Avatar billede mickni33 Nybegynder
31. oktober 2005 - 12:33 Der er 17 kommentarer og
1 løsning

flytning af data

jeg har en masse data i en tabel som ligger og fylder og som næsten aldrig bliver brugt og samtidigt kun bruges internt.
De data kunne jeg godt tænke mig at flytte og opbevare det et andet sted. Men der er nogle forholdsregler

1) Data må ikke slettes

2) de data der skal flyttes er en kopi af den originale række og
  kopien har så en reference til den originale række 
  referencen er et ID nummer)
 
3) referencerne skal stadig kunne benyttes

4) Hvad er den bedste metode til dette lille projekt, tænkte at
  oprette en tabel til opbevaring af de flyttede data
Avatar billede dr_chaos Nybegynder
31. oktober 2005 - 12:38 #1
du kan oprette en tabel magen til den gamle.
I stedet for et id felt med autogeneret tal laver du bare et int felt og kopierer data evt ved bare at markerer det i den gamle tabel og copy paste det til den nye tabel.
Avatar billede mickni33 Nybegynder
31. oktober 2005 - 12:42 #2
ahh okjeg skal godt nok hente data fra mange forskellige tabeller men det gir nok det samme for jeg laver et script som kører det...
dvs int feltet laver jeg som en fremmednøgle til referencen
Avatar billede dr_chaos Nybegynder
31. oktober 2005 - 12:45 #3
ja på den måde sørger du for at ID ikke ændres.
Avatar billede mickni33 Nybegynder
31. oktober 2005 - 12:47 #4
Men er det så den bedste måde at gøre det på :-)
Avatar billede dr_chaos Nybegynder
31. oktober 2005 - 12:59 #5
du kan også bruge export/import data men det er mest hvis du skal flytte det til en anden database.
Jeg tror det er hurtigst/bedst at generer et script som kan flytte data mellem tabellerne.
Avatar billede ldanielsen Nybegynder
31. oktober 2005 - 13:24 #6
Du kan simpelthen gøre sådan, på betingelse af at den originale tabel (DinTabel) har en Primærnøgle (DinTabelID) der er identity, samt at den nye tabel (DinTabel_Backup) har præcis samme kolonner som den gamle, samt at DinTabelID i DinTabel_Backup ikke er identity

INSERT INTO DinTabel_Backup SELECT TOP 1000 * FROM DinTabel ORDER BY DinTabelID
DELETE FROM DinTabel WHERE DinTabelID <= (SELECT Max(DinTabelID) FROM DinTabel_Backup)

Den flytter 1000 poster ad gangen
Avatar billede mickni33 Nybegynder
31. oktober 2005 - 13:37 #7
hmmm problemet er at den data som er i alle tabellerne er forsklligt fra tabel til tabel så man kan nok ikke nøjes med at gemme i en enkelt tabel...

Så der skal nok en masse nested snask til som tjekker om attributterne er ens i den originale tabel og i backup tabellen...

Er der et godt link til den slags 'programmering'
Avatar billede mickni33 Nybegynder
31. oktober 2005 - 13:43 #8
hmmmm måske ville det være nemmest at lave i C++ eller hva synes i
Avatar billede dr_chaos Nybegynder
31. oktober 2005 - 14:05 #9
du kun også bare lave en kopi af databasen via enterprise manager.
eller bruge export/import hvor du selv kan vælge vil tabeller der skal flyttes.
Avatar billede dr_chaos Nybegynder
31. oktober 2005 - 14:05 #10
eller generer en bak fil som du kan indlæse igen hvis alt går galt.
Avatar billede mickni33 Nybegynder
31. oktober 2005 - 14:06 #11
hmmm ja men det ville være smartere at trykke på en knap hver 14. dag og så lavede skidtet sig selv :-)
Avatar billede mickni33 Nybegynder
31. oktober 2005 - 14:07 #12
jaaa eller måske en form for en bat service som flyttede disse data hver 14 dag
Avatar billede mickni33 Nybegynder
31. oktober 2005 - 14:08 #13
eller det kan MSSql måske godt selv ?
Avatar billede dr_chaos Nybegynder
31. oktober 2005 - 14:13 #14
ja du kan gemme scriptet som en replication hvis du bruger export/import data.
Avatar billede 0xffff Nybegynder
31. oktober 2005 - 19:20 #15
Du kan oprette en DTS pakke der kopierer data fra flere tabeller ned i den ene tabel som du har, den kan du så schedule til at køre automatisk bagefter.

Eller du kan lave en replikering.

Begge metoder virker ganske fortræffeligt.
Avatar billede mickni33 Nybegynder
31. oktober 2005 - 22:15 #16
jeg havde tænkt på et SQL script i Enterprise manageren og så bagefter køre det som et job som også kan gøres i Enterprise manageren.....
Men det er måske det du mener :-)

Husk lige at lave svar
Avatar billede dr_chaos Nybegynder
01. november 2005 - 06:39 #17
ja det var en af mulighederne.
Avatar billede mickni33 Nybegynder
02. november 2005 - 15:40 #18
husk lige at lave 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