Hier findet eine langwierige Debatte statt, daher würde ich gerne andere Meinungen hören.
Ich habe viele Tabellen mit Uniqueidentifier Clustered PK. Ob dies eine gute Idee ist, ist hier nicht möglich (und es wird sich nicht so schnell ändern).
Jetzt muss die Datenbank zusammengeführt und veröffentlicht werden, und die DEVs befürworten die Verwendung einer separaten Zeilenleiterspalte, anstatt die vorhandene PK als ROWGUIDCOL zu markieren.
Grundsätzlich sagen sie, dass die Anwendung niemals etwas in ihre Domäne bringen sollte, das nur von der Replikation verwendet wird (es ist nur "DBA-Zeug" für sie).
Unter Leistungsgesichtspunkten sehe ich keinen Grund, warum ich eine neue Spalte hinzufügen sollte, um etwas zu tun, das ich mit einer vorhandenen tun könnte. Da es sich nur um "DBA-Zeug" handelt, lassen Sie den DBA wählen.
Ich verstehe den Punkt der DEVs irgendwie, aber ich bin immer noch anderer Meinung.
Gedanken?
EDIT: Ich möchte nur hinzufügen, dass ich in dieser Debatte in der Minderheit bin und die DEVs, die meine Position in Frage stellen, Menschen sind, die ich respektiere und denen ich vertraue. Dies ist der Grund, warum ich nach Meinungen gefragt habe.
Ich könnte auch etwas vermissen und ihren Punkt missverstanden haben.
quelle
Antworten:
Ich stimme vollkommen zu. Aber ... der Primärschlüssel wird nicht nur für die Replikation verwendet (vermutlich wird er von der Anwendung auf irgendeine Weise verwendet). Das Argument macht in diesem Zusammenhang keinen Sinn.
Soweit mir bekannt ist, gibt es auf jeden Fall nur zwei Möglichkeiten, wie dieses "DBA-Zeug" die Domänengrenze überschreitet:
Wenn die Anwendung Abfragen verwendet, die
ROWGUIDCOL
wie folgt auf die Spalte verweisen :Ich gehe davon aus, dass noch keine Ihrer Spalten diese Eigenschaft hat, sodass die Anwendung dies nicht tun würde. (Übrigens
ROWGUIDCOL
ist das Konzept völlig unabhängig von der Replikation. Es kommt nur so vor, dass die Zusammenführungsreplikation es verwendet.)Die Primärschlüsselspalte kann nicht mehr aktualisiert werden. Wenn die Anwendung dies tut und keine Änderungen vorgenommen werden, um einen anderen Algorithmus zu verwenden, bleibt keine andere Wahl , als der Tabelle eine neue Spalte hinzuzufügen, und daher ist keine Diskussion erforderlich.
Abgesehen von diesen Verhaltensweisen ist die
ROWGUIDCOL
Eigenschaft vollständig transparent. Sie können es hinzufügen, und die Anwendung würde es nie erfahren. Jede Art von Datenreplikationsszenario sollte für Anwendungen so transparent wie möglich sein.quelle
ROWGUIDCOL
in diesem Kontext (dh nicht in einerCREATE TABLE
/ -AnweisungALTER TABLE
) ist seit mindestens SQL Server 2008 R2 (Suche nach FeatureID 182) zugunsten von veraltet$ROWGUID
.Genau. Solange sich der PK-Wert nicht ändern muss, ist es besser, die vorhandene Spalte mit der eindeutigen Kennung als Zeilenleitfaden zu verwenden.
quelle
"Grundsätzlich sagen sie, dass die Anwendung niemals etwas in ihre Domäne bringen sollte, das nur von der Replikation verwendet wird (es ist nur" DBA-Zeug "für sie)."
Es wird jedoch nicht nur für die Replikation verwendet. Es ist auch (und schon) deine PK.
quelle