21. juli 2006 - 08:51Der er
11 kommentarer og 1 løsning
Dataoverførsel, DTS-pakker og relationer
Jeg står og skal lave en stor dataoverførsel mellem to forskellige databaser. De to databaser ligner hinanden og indeholder stort set samme typer af data, men opbygningen og relationerne er meget forskellig.
Jeg har lavet en mapning af databaserne og har nogenlunde styr på hvilke data der skal hvorhen - men hvordan skal jeg nu få dem flyttet. Min første tanke var at skrive et VB eller C# program der løber data igennem og hen ad vejen flytter data og sikrer oprettelse af de korrekte relationer mellem data. Men det kan jo meget nemt blive et tungt program når flere millioner records skal loopes igennem og flyttes. Så jeg er begyndt at kigge lidt på DTS, men mangler lidt hjælp til at komme igang - kan i hjælpe mig? Mest af alt mangler jeg hjælp til hvordan man (smartest) opbygger sine DTS-pakker når tabellerne ikke er ens og man skal sikre at relationerne mellem ID-felter undervejs bliver oprettet korrekt?
Håber i kan hjælpe mig både med konkrete eksempler og links til lidt læsestof.
dr_chaos -> Det duer ikke, da det skal køres adskillige gange af folk der ikke kender til databaser. De skal således helst blot kunne afvikle DTS-pakkerne, eller starte et program der kører det hele igennem. Desuden tvivler jeg på at de to programmer(har faktisk haft kigget lidt på SQL Compare tidligere) er i stand til at flytte data og skabe de rigtige relationer mellem to databaser der er så forskelligt opbygget. Husk på at de ikke blot skal synkroniseres. Jeg skal have kopieret data fra det ene system til det andet - uden at ændre på opbygningen af nogen af systemerne.
Du finder en røkke artikler om DTS her, samt hos Microsoft (msdn.micorosft.com)(.
I DTS kan du grafisk trække sourc felt over på destinatino felt, hvis felter i destination kommer fra samme source tabel. Hvis det ikke gør, kan du vurdere at lave en sql som giver dig source data som ligner på destination data.
DTS vil forsøge at lave mapning selv mellem source og target, hvis felt navnenen er identiske på source og target. Hvis de ikke er det, må du selv lave arbejdet.
Kort fortalt, skal du i DTS definere to datasources (connections), en til kilde og en til target. Når du har lvaet disse to, kan du markere begge to, højreklikke, og vælge Transform Data Task. Her definerer du hvordan data skal flyttes fra den ene tabel til den anden.
Du finder informationer om dette også i SQL Server Books Online, og masser af informationer ved at søge på SQL Server DTS på google.
Mit hovedproblem er at sikre at relationerne bliver korrekte, hvilket jeg har lidt svært ved at gennemskue hvordan jeg gør med DTS. Som sagt er opbygningen af databaserne ikke ens. Nogle data fra én tabel skal splittes og smides ind i 2 eller 3 forskellige tabeller og andre datatabeller skal samles. Så det er et lidt kompliceret projekt og kan som sagt ikke helt gennemskue hvordan jeg får oprettet de korrekte relationer i destinationsdatabasen.
Løsningen på relationer osv. er selvfølgelig blot at benytte lookups... doh!
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.