AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MSSQL Replikation

Ein Thema von haentschman · begonnen am 10. Mär 2022 · letzter Beitrag vom 15. Apr 2022
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.296 Beiträge
 
Delphi 12 Athens
 
#1

MSSQL Replikation

  Alt 10. Mär 2022, 15:09
Datenbank: MSSQL • Version: 2017 • Zugriff über: FireDAC
Hallöle...

Da ich Alleinunterhalter in der Firma bin, und nur auf meine eigenen Entscheidungen höre , wollte ich diesmal lieber noch andere Meinungen einholen...

Gegeben:

1. 1 DB Server in der Firma
2. DB Server in den verschieden Niederlassungen

Frage vorweg:
Die einzelnen Transanktionsmöglichkeiten habe ich schon ausprobiert...funktionieren alle. Ich habe aber verschiedene Konstellationen die eigentlich ein Mischen erfordern. Geht auch...nur welche sind die besseren für die Konstellation? Welche Fallstricke erwarten mich?
...wie macht man es richtig.

Konstellation 1:
1. Daten die "sofort" synchronisiert werden müssen. Bidirektional. - Mergereplikation (1 Minute Intervall) funktioniert
Info: Jeder Datensatz wird in einer Sperrtabelle "gesperrt" bevor er geöffnet wird. In dieser einen Minute könnte der Andere auch den DS öffen und schreiben. Wie oft kommt das vor?
vs.
1. Jede "Niederlassung" hat seinen Verleger, der Server hat seinen Verleger - Transaktionsreplikation noch nicht probiert
Info:
https://docs.microsoft.com/de-de/sql...l-server-ver15
Zitat:
Wenn Sie ein Abonnement unter Verwendung des vollqualifizierten Domänennamens (FQDN) zu einer bidirektionalen Veröffentlichung hinzufügen möchten, sollten Sie überprüfen, ob der Servername (@@SERVERNAME) des Abonnenten den FQDN zurückgibt. Wenn der Servername des Abonnenten den FQDN nicht zurückgibt, führen Änderungen durch den Abonnenten möglicherweise zu Primärschlüsselverstößen.
Konstellation 2:
1. "statische" Daten unidirektional zum Abonnenten - Transaktionsreplikation funktioniert
Option: ggf. Umstellung auf bidirektional

Danke für Infos...

Geändert von TBx (12. Apr 2022 um 07:35 Uhr) Grund: Dreckfuhler gemopst ;)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: MSSQL Repikation

  Alt 10. Mär 2022, 15:14
Funktionieren werden alle.
Frage ist nur ob alle Anwendungen mitspielen.

Es ist immer problematisch wenn die Anwendung Autoinc-Felder nutzt.
Das zweite Problem sind immer Cascatierte Löschoperationen.

Da kann es leicht passieren das die Replikationen "die Krätsche machen".
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.296 Beiträge
 
Delphi 12 Athens
 
#3

AW: MSSQL Repikation

  Alt 10. Mär 2022, 15:38
Zitat:
Frage ist nur ob alle Anwendungen mitspielen.
...überall meine Anwendungen. Allerdings Umbau von Desktopversion zu Filialsystem...mal eben so.
Zitat:
Es ist immer problematisch wenn die Anwendung Autoinc-Felder nutzt.
Code:
create table xxx(
  ID int identity(1,1) not null,
Die ID Felder sind AutoInc... Lassen wir auf uns zukommen. Da sind noch einige Leichen im Keller...
Was greift eher... die identity oder AutoInc? Bringt es was das auf NONE umzustellen?
Zitat:
Das zweite Problem sind immer Cascatierte Löschoperationen.
Im Moment habe ich eine Cascade die aber nie benutzt werden "sollte", weil diese Daten nicht gelöscht werden. Die Cascade ist nur für "Wartungen"...
Kann ich mal ausprobieren.

Danke
Miniaturansicht angehängter Grafiken
id.png  
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
563 Beiträge
 
Delphi XE6 Enterprise
 
#4

AW: MSSQL Repikation

  Alt 10. Mär 2022, 15:55
Kann man bei Identity eine Art Startwert vorgeben? Dann addiere doch eine sehr hohe Zahl oben drauf, und zwar auf jede zu mergende Tabelle einen anderen. Ich nehme mal an, das sind BigInt, also 64 Bit Integer? Dann auf eine Tabelle 1.000.000.000.000 draufaddieren, bei der nächsten 2.000.000.000.000 usw. Die Ids zählen dann nicht 1, 2, 3, ... usw sondern halt 1.000.000.000.001, 1.000.000.000.002, 1.000.000.000.003, ...usw. - und es gibt keine Konflikte beim Mergen.

Wenns sich um Filialen handelt, wäre auch die Filial-ID möglich, vorausgesetzt, das ist ne Zahl...
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.296 Beiträge
 
Delphi 12 Athens
 
#5

AW: MSSQL Repikation

  Alt 10. Mär 2022, 16:19
Zitat:
und es gibt keine Konflikte beim Mergen.
...dafür ist die Sperrtabelle da. Damit nur einer schreiben kann. Bei Mergerepikation könnte es vorkommen, das 2 dann den DS offen haben...
Zitat:
1.000.000.000.003, ...usw. - und es gibt keine Konflikte beim Mergen
Wenn 2 die 1.000.000.000.003 schreiben könnte das auch zu Konflikten führen.

Geändert von haentschman (11. Mär 2022 um 05:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: MSSQL Repikation

  Alt 10. Mär 2022, 16:20
Kann man bei Identity eine Art Startwert vorgeben?
Kann man.

Wir hatten zwei CRM-Systeme, welche laut Feature-Matrix Replikation bei MS SQL Unterstützten.
Beide haben nach kurzer Zeit die Replikation nicht mehr unterstützt, da trotz dieser Möglichkeiten die ganzen Filialen doch irgendwann mal Replikations/Merge-Probleme zeigten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: MSSQL Repikation

  Alt 10. Mär 2022, 16:22
Wenn 2 die 1.000.000.000.003 schreiben könnte das auch zu Konflikten führen.
Filiale 1 bekommt Nummernbereich 1.000.000.000.000 bis 1.999....
Filiale 2 bekommt Nummernbereich 2.000.000.000.000 bis 2.999....

Theoretisch gibts keine Überschneidungen.
Praktisch sind bei uns 2 Hersteller von CRMs an genau diesem Problem gescheitert...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.296 Beiträge
 
Delphi 12 Athens
 
#8

AW: MSSQL Repikation

  Alt 10. Mär 2022, 18:12
Zitat:
Wenn 2 die 1.000.000.000.003 schreiben könnte das auch zu Konflikten führen.
...wenn aber 2 Niederlassungen oder der Hauptsitz gleichzeitig, was möglich ist, am Beleg arbeiten, hast du trotzdem evt. Konflikte...unabhängig von der ID des Datensatzes...weil die ID ist in diesem Falle gleich!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: MSSQL Repikation

  Alt 12. Mär 2022, 11:37
...wenn aber 2 Niederlassungen oder der Hauptsitz gleichzeitig, was möglich ist, am Beleg arbeiten, hast du trotzdem evt. Konflikte...unabhängig von der ID des Datensatzes...weil die ID ist in diesem Falle gleich!
Gleiche schon existierende ID.
Das ist eigentlich immer das "kleinere Problem", da hierfür entweder die Anwendung eine Konflikt-Wizward anbieten muss/wird oder das über die DB-Tools der Hersteller läuft.

Unsere Anwendung läuft auch bei einem Kunden mit zwei großen Standorten mit Merge-Replikation.
Auch wenn unsere Anwendung nicht für Replikation ausgelegt ist, funktioniert es. Aber auch nur weil die Nummernbereiche getrennt sind und praktisch der o.g. Fall nicht vorkommen sollte. Und falls doch ist der en IT so fähig die Merge-Konflikte selbständig zu lösen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.296 Beiträge
 
Delphi 12 Athens
 
#10

AW: MSSQL Repikation

  Alt 12. Mär 2022, 16:43
Hallöle...
Zitat:
die Anwendung eine Konflikt-Wizward anbieten muss
...ich stelle sicher, daß nur einer im "System" diesen DS schreiben kann. Alle anderen kennen die Sperre, weil sie ist auf der "Masterdatenbank" eingetragen. Jeder Client setzt beim Bearbeiten die Sperre "zentral"...und nimmt sie auch wieder raus.

Klar kann trotzdem noch einiges schiefgehen. Sowas wie: Sperre kann nicht entfernt werden...weil Internet kaputt. Dafür kann man die Sperre im Notfalle manuell entfernen.

...aber wenigstens keine überschriebenen Daten.

Danke an Alle...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz