Avatar billede pdj Novice
20. juni 2003 - 10:12 Der er 17 kommentarer og
1 løsning

Er det Transactional Replication jeg skal bruge?

Jeg har blandt andet kikket på følgende links, men ikke rigtigt fundet svaret:
http://www.microsoft.com/sql/evaluation/features/replication.asp
http://www.eksperten.dk/spm/125352

Vi har to lokationer der er forbundet med en fast VPN forbindelse. Vi kører pt. en SQL2K på den ene lokation som vi alle connecter til. Dvs. halvdelen har perfekte svartider, og den anden halvdel har elendige svartider. Det vil jeg så forsøge at gøre noget ved :-)

De applikationer vi bruger understøtter desværre ikke Merge Replication, da de selv laver primær nøgler og retter tabel struktur når vi retter opsætning.

Men så var det at jeg kom frem til at det er læsninger der er kritiske/generende. Det vil sige at om det tager ½ eller 5 sekunder når jeg laver en insert/delete/update er næsten ligegyldigt.

Kan Transactional Replication ikke løse det problem?
Dvs. lave en SQL server på hver lokation som de lokale brugere læser fra. Når så de forsøger at lave en opdatering sørger SQL selv for at gøre det begge steder i samme transaktion. Hvis forbindelsen til den anden SQL server er nede, skal den simpelthen bare fejle.

Kan det lade sig gøre, og er der nogle simple henvisninger til en how-to det minder om vores opsætning?

Evt. nogle tegninger eller forklaringer på subscribers og publisher. Betyder det at en af SQL baserne er "mere master" end den anden? Så hvis forbindelsen ryger kan de der er connected til publisheren arbejde videre som intet er hændt og der der er tilknyttet en subscribe kan kun lave læsning. (Når forbindelsen kommer op igen skal der "bare" synkroniseres, og så er man kørende igen?)

Bemærk at det hele skal køre "seamless" for vores klient applikation.

Sikkert mange dumme spørgsmål, men prøv om ikke du kan hjælpe mig i den rigtige retning :-)
Avatar billede weje Nybegynder
20. juni 2003 - 10:18 #1
Har også lidt problemer med replikering mellem 2 lokationer, så jeg er lige med på en kigger

/Weje
Avatar billede janus_007 Nybegynder
23. juni 2003 - 16:15 #2
Transactional replikering er måske ikke lige løsningen her!. Den er faktisk baseret på en master(publisher) til targets(subscribers) løsning, dvs. du kan ikke lave ændringer på subscriber som så kommer på publishers , ej heller vil de blive overskrevet ved replikeringen. Kun publishers ændringer kommer til subscriber!

Må jeg høre hvorfor i har valgt VPN fremfor trusted domains ??.

Jeg kan komme i tanke om nogle mulige løsninger, men lad mig lige pejle mig lidt ind på opgaven først :O)
Avatar billede pdj Novice
23. juni 2003 - 16:26 #3
Publisher vs. subscriber:
Dvs. at hvis man connecter til en subscriber kan man kun læse? Hmm, det kan vi jo ikke bruge til noget :-(

Vi har en domain controller på begge lokationer, men kun eet domain.
Jeg forstår ikke lige spørgsmålet med trusted domain?


Jeg har i mellemtiden desværre fundet ud af at den applikation vi forsøger at optimere ikke lader klienterne connecte direkte til SQL, men via en speciel serverapplikation der connecter til SQL. Derved er sandsynligheden for at vi kan gøre noget nærmest elimineret :-(
Avatar billede janus_007 Nybegynder
23. juni 2003 - 16:36 #4
Tjaa det er jo egentlig lidt ude for mit område *S* Men du skal åbne Active Directory Domains and Trusts. Herefter skal du skrive hvilket domæne der skal trustes i den ene og den anden (sføli hinanden) under Domains that trust this domain, undgå at verify password! Når begge er udfyldt udfylder du Domains trusted by this domain (også begge), herfter kan du lave en verify passwords.

Nu har du adgang til begge domainer igennem en 100% trusted og meget sikker adgang, meget mere sikker end VPN !
Avatar billede janus_007 Nybegynder
23. juni 2003 - 16:37 #5
Den server applikation kan vel bare sættes op med andre ip's går jeg udfra ??
Avatar billede janus_007 Nybegynder
23. juni 2003 - 16:39 #6
btw. har du mulighed for at lave remote servers eller linked servers, hvis du opretter en sql server på den anden lokation ?
Avatar billede janus_007 Nybegynder
23. juni 2003 - 16:56 #7
ehh kommer lige i tanke om at du ikke kan lave remote server uden trusted domains.
Avatar billede pdj Novice
24. juni 2003 - 09:00 #8
Hvorvidt trusted domains er mere eller mindre sikker end vores hardware VPN ved jeg ikke noget om. (Og det er principielt heller ikke mit spørgsmål :-))

>Den server applikation kan vel bare sættes op med andre ip's går jeg udfra ??
Njah, det vil jo kræve at vi har en server applikation kørende på begge lokationer før vi får noget performance ud af det. Jeg frygter bare at den forventer at den kører eksklusivt på SQL basen, fx. ved at have sin egen cache eller bruge memory til diverse variabler.

Men igen er selve vores applikatione for så vidt uinteressant. Spørgsmålet er mere om det overhovedet kan lade sig gøre at lave den opsætning af SQL jeg har forsøgt at skitsere.
To fysisk adskilte SQL servere der kører 100% parallelt. Klienter logger sig på den ene eller anden server, og alle læsninger foregår rent fra den server. Kun ved opdateringer inddrages den anden server, og det skal gøres helt usynligt for klienterne.
Avatar billede janus_007 Nybegynder
24. juni 2003 - 09:46 #9
Du har ret! Så må jeg bekende at jeg ikke ved nok om 2 fysisk adskilte SQL-servere, de ligger på samme domain, men kender ikke hinanden. Den opsætning kunne og skulle laves meget bedre, iflg. min overbevisning. I fraskriver jer mange fede ting ved ikke at køre trust :O)

Her er et par ting de kunne prøve igennem, de kan ved du vil:

1. Linked servers (har tjekket op på det, og de kan fungere uden trust)
2. Openrowset...
3. eller måske logshipping

Jeg vil anbefale dig at bruge din tid på linked servers... Det er såre simpelt at connecte til sådan en eks.vis
SELECT * FROM [xxx.xxx.xxx.xxx].DBname.dbo.Tablename

eller openrowset:
SELECT a.*
FROM OPENROWSET('MSDASQL',
  'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',
  pubs.dbo.authors) AS a
ORDER BY a.au_lname, a.au_fname


Og så lave en trigger eller lign. der hele tiden syncher de 2 servere :O)
Avatar billede pdj Novice
24. juni 2003 - 10:02 #10
Jeg beklager, men jeg syntes vi snakker fuldstændig forbi hinanden. :-(
Jeg ved desværre ikke nok om SQL til at kunne formulere mit spørgsmål bedre.

Er der andre læsere der kan forstå hvad jeg forsøger at beskrive?
Avatar billede janus_007 Nybegynder
24. juni 2003 - 10:09 #11
pdj-> Jeg har forstået hvad du vil!, du vil have at ændringer på en server også fremkommer på en anden et andet sted og viceversa. Men det er ikke så simpelt som du gerne vil have det til at være, jeg vil meget gerne hjælpe. Lad os starte forfra så...

Ved du noget om hvad en trigger kan og gør ??, læs evt. her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/createdb/cm_8_des_08_4nxu.asp

Har du læst om linked servers, evt. her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/acdata/ac_8_qd_12_23xd.asp

og her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adminsql/ad_1_server_4uuq.asp
Avatar billede zapzap Nybegynder
25. juni 2003 - 19:32 #12
Hvis det skal køre transparent for den eksisterende klient, så bliver det nok svært at dirigere læsninger til lokal server, og opdateringer til remote server. Ellers kan transactional replication godt hjælpe dig i dit scenarie, så vidt jeg kan se, hvis du ellers vil tillade lidt 'slup' mellem opdatering og læsning - der skal jo lige replikeres først.
Avatar billede pdj Novice
26. juni 2003 - 09:05 #13
Nu nærmer vi os!
Hvis vi lige ser bort fra MS SQL, og kikker på hvad der rent teoretisk burde være muligt - så vi i det mindste er enige om hvad målet er. :-)

Jeg ønsker update/insert/delete bliver udført på alle tilknyttede servere under een og samme transaction. (Hvis den fejler et sted bliver den automatisk rullet tilbage på alle baser). Selvfølgelig transparent for den enkelte klient. Alle læsninger foregår derimod direkte fra den lokale base.

Jeg troede at det netop er hvad "transactional replication" betyder i MS SQL.

Hvis vi lige igen ser bort fra mulighederne (eller mangel på samme ;-)) i MS SQL, ville det så egentlig ikke være en ganske fornuftigt opsætning i den beskrevne situation?
Avatar billede zapzap Nybegynder
29. juli 2003 - 14:44 #14
Du kan ikke uden at pille i programmet lave en sådan distribueret transaction, der skal du designe/ændre programmet til det (se under MS DTC i BOL). Den server-dims du snakker om er derfor lige målet.
Med transactional replication definerer du en publikation, normalt en stak tabeller, hvor der skal være PK'er på alle. Men da du ændrer opsætning => tabeller, skal du da også genskabe din publikation når du ændrer opsætning. Hvis det er ok, kan du nok få Transactional Replication til at virke med updating subscribers (altså tovejs).
Avatar billede pdj Novice
29. juli 2003 - 15:00 #15
Så konklusionen er at det ikke kan lade sig gøre? :-(

Tilbage til det mere teoretisk spørgsmål:
Er det egentlig ikke et fornuftigt ønske til db setup?
Er der andre baser der kan gøre det? (husk at "transparent for applikationerne" er et must...)
Avatar billede janus_007 Nybegynder
30. juli 2003 - 11:43 #16
Vores setup er lavet sådan, derfor ved jeg tilfældigvis hvad jeg snakker om :O). Og enhver fornuftig dba'er vil evt. i samarbejde med en sysadmin lave et sådant setup. Alt for ofte er det ukvalificerede folk der roder med sql-serveren mm.

pdj-> har du læst de ovenstående link jeg gav dig? Du siger selv at du ikke ved nok om sqlserveren, hvorfor så overhovedet påtage dig det ansvar, hvis du ikke vil sætte dig korrekt ind i tingene?

Du kan evt. bruge merge replication, den understøtter dog ikke transaction styring.. dvs. no rollback etc. Det gør derimod linked server, men spørgsmålet er jo også om du er int. i rollback globalt? Det er jo kun nok med rollback på lokalserveren, da transactionen først bliver replikeret efter commit :O)
Avatar billede zapzap Nybegynder
04. august 2003 - 13:19 #17
janus-> Han _har_ jo prøvet merge, og som jeg forstår det, er hans skema dynamisk, sådan at når han ændrer 'opsætning', så ændres skemaet. Så skal publikationen jo også ændres (???), på samme måde som ved TR. Derfor vil en trigger-løsning sikkert også skulle genskabes når 'opsætning' skifter.
<-
Avatar billede pdj Novice
24. oktober 2003 - 14:42 #18
Lukker spm.
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