Ich lerne, CDC in SQL Server 2008 zu verwenden. Ich habe gelesen, dass LSN immer inkrementiert ist und auf dem Zeitstempel basiert. Warum ist LSN erforderlich, wenn es aus dem Zeitstempel berechnet wird, der als inkrementelle Sequenz-ID für vorgenommene Änderungen verwendet werden kann? Ich bin sicher, dass es auch einen anderen Zweck von lsn geben wird.
sql-server-2008
change-data-capture
jaczjill
quelle
quelle
Antworten:
Ein Datums- / Zeitwert wird im Allgemeinen nicht als eindeutig genug angesehen. Unabhängig davon, wie genau Sie es definieren, können zwei Aktionen für denselben Datums- / Uhrzeitwert ausgeführt werden.
Vor SQL Server 2008 war der genaueste Wert gerundete 3,33 Millisekunden, mit
datetime
denen eine Ewigkeit wirklich ist.datetime2
wird in 100 Nanosekunden aufgelöst, was ebenfalls nicht genau genug ist.Aus einer anderen Sicht ist Zeit eine reelle Zahl . Unabhängig davon, wie genau Sie eine Zeit speichern, wird Ihre Auflösung immer etwas gerundet (in diesem Fall 3,33 ms oder 100 ns).
Die Verwendung von LSN ( dh
numeric (25,0)
) ergibt einen streng monoton ansteigenden eindeutigen Ganzzahlwert. Es ist eine natürliche Zahlquelle