[SQL Server2005] Kopiëren data naar andere server

Pagina: 1
Acties:

  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
Voor een web project moet er een verwerk server (bijv. server 2) gemaakt worden naast de daadwerkelijke webserver waar de data op staat (bijv. server 1).

Op server 2 moet er een bestand ingelezen worden (Bulk Insert), en die data moet m.b.v. een aantal SP's verwerkt worden. Daarna moet deze data gekopieerd worden naar server 1 over het interne netwerk.

Ik zou graag willen weten wat de beste manier is om deze data te kopieeren. Het gaat om ongeveer 50.000 records per nacht, maal 400 kolommen (ik weet het, is niet genormaliseerd, maar het is niet mijn db model 8)7). Is het verstandig om een Insert Into-Statement te gebruiken hiervoor, of zijn er andere (liefst snellere) manieren voor?

Edit:
Het gaat om belangrijke informatie. Er mag alleen gewijzigde data overschreven worden. Dit wordt als het goed is wel afgevangen in de SP's.

[ Voor 9% gewijzigd door Acid__Burn op 03-05-2007 11:08 ]


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Welke SQL server?

Wie trösten wir uns, die Mörder aller Mörder?


  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
My bad... Het gaat om SQL 2005...

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Ik denk dat deze eerder in DTE thuishoort.

Al eens naar replication gekeken ?

https://fgheysels.github.io/


  • arnob
  • Registratie: Juli 2000
  • Niet online
de SQL replicatie kan je ook gebruiken. netjes door het systeem gemonitored en afgehandeld.

[ Voor 4% gewijzigd door arnob op 03-05-2007 11:12 ]


  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
@whoami:
Sorry voor de verkeerde plaatsing...

@whoami/arnob:
Replicatie is een idee. Onze andere servers worden ook gerepliceerd. Server 1 wordt gerepliceerd naar locatie 2. Ik wil een aparte server op locatie 2 zetten (dat is geen productie omgeving) en die moet dan weer terug gerepliceerd worden naar locatie 1. Geeft dit geen probleem dan?
Hoe zit het met gelijktijdige replicatie? Wordt dit afgevangen?

  • arnob
  • Registratie: Juli 2000
  • Niet online
Acid__Burn schreef op donderdag 03 mei 2007 @ 11:25:
<snip>weer terug gerepliceerd worden naar locatie 1. Geeft dit geen probleem dan?
Hoe zit het met gelijktijdige replicatie? Wordt dit afgevangen?
Dit zijn geen unieke situaties. In de documentatie staan ook deze scenarios beschreven.
Heb je het over edits op twee lokaties op hetzelfde gerepliceerde object? Dan komt het er op neer om een filter (tsql of view of sp) als bron te gebruiken die alleen de eigen edits beschikbaar maakt voor replicatie naar de andere kant. Het zou in kunnen houden dat er een veld toegevoegd moet worden aan de tabel(len) met een lokatieID oid. Door een default waarde te gebruiken voor het veld zijn er misschien geen aanpassingen aan de software nodig.
Truukje is trouwens een al aanwezig auto nummer veld te gebruiken welke op elke lokatie een eigen afwijkende startwaarde heeft.

  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
Nee, het gaat niet om simultane schrijf acties op 2 locaties. Misschien moet ik het beter omschrijven:

Locatie 1: R/W acties
Locatie 2: R

Hier komt Locatie 3 bij. Op locatie 3 wordt er extra data gegenereerd, die a.d.h.v. Locatie 2 gecontroleerd moet worden.
Daarna de data van Locatie 3 naar Locatie 1 geschreven.

Maar het probleem is dat er nieuwere data op Locatie 3 aanwezig kan zijn, dan op Locatie 1. Die data moet dus vervangen worden. Normaal is dat met een SP wel op te lossen. Maar omdat het om zo'n grote hoeveelheid data gaat, zou ik graag een manier willen die snel is. Het gaat immers om een productie omgeving, die je zo min mogelijk offline wilt hebben.

  • arnob
  • Registratie: Juli 2000
  • Niet online
Acid__Burn schreef op donderdag 03 mei 2007 @ 13:38:
Nee, het gaat niet om simultane schrijf acties op 2 locaties. Misschien moet ik het beter omschrijven:

Locatie 1: R/W acties
Locatie 2: R

Hier komt Locatie 3 bij. Op locatie 3 wordt er extra data gegenereerd, die a.d.h.v. Locatie 2 gecontroleerd moet worden.
Daarna de data van Locatie 3 naar Locatie 1 geschreven.

Maar het probleem is dat er nieuwere data op Locatie 3 aanwezig kan zijn, dan op Locatie 1. Die data moet dus vervangen worden.
Dat kan ik zo snel niet goed volgen. Is het perse nodig dat lokatie 3 de data lokaal heeft staan? Je kan ook de clients laten connecten naar lokatie 2 of vanuit de server op lokatie 3 cross server querien naar de server op lokatie 2.
Normaal is dat met een SP wel op te lossen. Maar omdat het om zo'n grote hoeveelheid data gaat, zou ik graag een manier willen die snel is. Het gaat immers om een productie omgeving, die je zo min mogelijk offline wilt hebben.
replicatie gebruikt ook bulk copy. de vraag is dus waarin je snelheids winst denkt te halen. compressie in het 'handmatig' kopieeren proces? dan moet je dus data opsparen. data heel snel maar pas na een uur kopieeren wordt niet door iedereen als snel gezien.
replicatie kan je ook desgewenst met het transactielog laten doen, dwz onmiddelijk als er data is wat van toepassing is deze overhevelen.

edit: offline zeg je? wat zou je offline willen halen? 'kunnen', beter gezegd.

[ Voor 2% gewijzigd door arnob op 03-05-2007 16:11 . Reden: quote gedoe ]


  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
@arnob:
Helaas moet de data op Locatie 3 verwerkt worden.

En wat betreft snelheidswinst: Het hoeft niet meteen gekopieerd te worden, dit gebeurd 1 keer: 's avonds. Alleen wil ik de tijd die het kost om die data over te zetten zo klein mogelijk maken...

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Waarom probeer je geen merge/transactionele replicatie? Of ik zie iets over het hoofd, of het is een standaardsituatie. Wij hebben ook op drie locaties een database staan, waarvan op twee locaties R/W en een locatie R, en iedere vijf minuten wordt er gesynchroniseerd. Heel simpel, heel snel.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
@kenneth:
Hoe is het bij jullie geregeld dan? Als er iedere 5 min. wordt gesynced, genereerd dat dan geen network load waar je eng van wordt? Ik ben erg benieuwd of er nog aanpassingen gedaan moeten worden aan het datamodel om dit voor elkaar te krijgen.

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Alleen de records die zijn gewijzigd worden overgebracht, dit is echt peanuts. Sterker nog, als je het één keer per uur doet, dan moet ineens een grotere hoeveelheid worden overgebracht, dus 5 minuten is overall gezien aardiger voor je netwerk.

De enige aanpassingen zijn dat alle tabellen een uniqueidentifier-kolom moeten hebben (met newid() als default value), en je moet even in de docs lezen hoe het gaat met identities.

Probeer gewoon maar 'ns een testopstelling, het is best te doen :)

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
@kenneth:
Ga ik zeker doen. Ik wil eind volgende week tijd vrijmaken om een testopstelling te maken met Virtual Machine's. Kijken of het lukt. Als ik vragen heb, kan ik dan bij jou terecht? :D
Ben jij trouwens binnen het bedrijf waar je werkt verantwoordelijk voor de DB's? DBA?

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

DBA, ja. En gewoon posten hier, wie weet heb ik (of 'n ander natuurlijk) wel 'n antwoord :)

Wel eerst zelf docs lezen en proberen enzo ;)

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • cowgirl
  • Registratie: November 2000
  • Laatst online: 17-12-2020
Acid__Burn schreef op vrijdag 04 mei 2007 @ 11:11:
Ga ik zeker doen. Ik wil eind volgende week tijd vrijmaken om een testopstelling te maken met Virtual Machine's. Kijken of het lukt.
De self paced training kit voor 70-431 beschrijft deze vorm van replicatie ook uitgebreid. Aan de hand daarvan is het heel makkelijk de opstelling te maken.

  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
@cowgirl:
Alsof het zo hoord te zijn... Ik heb volgende week 3 dagen cursus... En raad eens...? Juist!!! 70-431 :D

Ik ga hierna een proefopstelling maken om te kijken of het lukt. Ik hou jullie op de hoogte!
Pagina: 1