Jeg står og skal lave dataspejling af nogle af tabellerne i min database til en ekstern lokation. Jeg er lidt på bar bund angående hvad der er bedst. Det skal helst bruge så lidt data som muligt da der betales pr mb og jobbet skal køre hver 30 minut. Jeg tænkte på noget med en differental backup. Men som jeg forstår det laver sådan en også meget data da den altid gemmer ændringer siden sidste fuld backup. Har i nogle erfaringer og forslag til hvordan det skal laves?
Der kommer ikke til at køre en database på den eksterne lokation endnu. så filerne skal overføres til ftp til at kunne blivet taget i brug når det ses nødvendigt.
Hvis jeg forstår dig helt korrekt, så taler du ikke om standard mirroring af data, men backup af data, og helst med så lidt data som muligt. Problemet er i første omgang at data som standard ikke er komprimeret, og fylder forholdsvis meget i forhold til komprimeret.
Tak for svaret, jeg vil lige læse dine links igennem i aften. Jeg kan se du foreslår backup, er det muligt at sætte en backup til kun at kopiere udvalgte tabeller? Jeg har ikke fundet et svar på det nemlig. Derfor er jeg lidt ovre i replikering igen. Med sådan en replikering burde det så ikke kunne lade sig gøre at kopiere de rå filer til den eksterne lokation. En replikering sender vel kun diffs ik?
Jo backup er til backup af hele databaser, men du kunne eventuelt scripte de tabeller du skal bruge over i en ny database og så køre backup på den?
Dette er et simpel eksempel på hvordan du kunne kopiere en tabel til en anden database.
SELECT * INTO database2.dbo.tblTest FROM database1.dbo.tblTest
Diferentiel backup kopierer kun ændringer, men hvis du bruger ovenstående metode er jeg bange for at den vil betragte alle data som nye, så skal du nøjes med at opdatere de data i din backup database med ændringer (måske via en trigger)
Jeg ville overveje at se på om SSIS (SQL Server Integration Services) ikke ville kunne hjælpe dig.
Hvis du ønsker så lidt data overført som muligt, ud fra x antal tabeller, så vil jeg for det første foreslå at du sikrer dig at der findes en modify kolonne, så du altid kan nøjes med at overføre de rækker som er ændret siden sidst.
Dernæst ville jeg lave en SSIS pakke, som for hver af dine tabeller, gemmer data i en tekstfil, fx kommasepareret eller lignende, og så overfører via ftp (kan ske som et step inde i ssis-pakken). Så vil jeg lave en transfer-log tabel, hvor jeg vil logge datoen for seneste extract, så jeg næste gang kan nøjes med at extracte de rækker, som har modify kolonnen større end sidste extract.
Men hvordan det helt præcist skal laves, afhænger også lidt af om du ovre på destinationen vil have præcis én fil per tabel, som præcist indeholder de data som live-tabellen indeholder. For så skal der noget merge til derovre også, hvilket måske ikke er helt trivielt. Alternativt er man tvunget til at overføre hele tabellen hver gang. Men man bør også kunne zip'e tekstfilen inden den ftp'es, og så begrænses datamængden også en del.
Jeg ville helt klart bruge transactional replikering til formålet eller mirroring.
Jeg kan ikke li idéen med SSIS, der er alt for meget arbejde involveret og SSIS er ikke lige tiltænkt den slags, bevares det kan da bruges, men er lidt søgt imho. SSIS er forøvrigt også til integration ikke til dataudveksling imellem ens databaser ;-) (sjang)
At kopierer ind i andre tabeller er også noget hø at fedte rundt med, meget kan gå galt, locks, transactions mv.
Du kan godt tage backup af tabeller, men det vil give dig en masse ekstra traffik, når du kun er interesseret i ændringerne så hold dig til transactional replication eller mirroring.
Brug de teknologier der er specielt udviklet til formålet. Hvis du ingen erfaring har er transactional replikering det nemmeste at opsætte.
janus_007: Må jeg henlede opmærksomheden på følgende sætning i den oprindelige besked fra spørger: "Der kommer ikke til at køre en database på den eksterne lokation endnu."
Okay så det er ikke muligt at sætte replikering op uden der er en subscriber? Jeg er ny på området så kender er ikke 100% inde i hvordan tingene virker.
Som jeg hører det, så vil det være bedst at markere de rows der er sendt til serveren og så kun sende dem der er markeret som ikke sendt. Er det rigtig forstået?
Findes der noget der noget indbygget der kan gøre dette og så evt sende til ekstern lokation som csv, eller skal jeg selv implementere det?
Jamen altså som sjang så korrekt fortalte mig(tak sjang, jeg er forøvrigt mere vågen nu hehe), så hvis du ikke har nogen database, ja så er der nok ikke så meget at gøre end backup eller filer.
Du kunne også overveje bcp og så skrive din sql selv. Jeg passer mig selv så :)
Jeg har valgt at opbygge mine egne Insert/Update og Delete statements og skrive dem til en fil på de vigtige tabeller. Har ikke rigtig set en bedre løsning som ikke bruger mange mb og som kan håndtere updates og deletes. Men er stadig åben over for muligheder.
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.