it-swarm.com.de

Warum haben MS SQL Server SEQUENCEs keinen ORDER-Parameter wie Oracle?

In die Dokumentation von CREATE SEQUENCE für T-SQL können Sie sehen, dass die CREATE SEQUENCE Befehl hat keinen ORDER Parameter.

Zum Vergleich die Oracle-Dokumente für CREATE SEQUENCE zeige die Optionen ORDER/NOORDER:

ORDER

Geben Sie ORDER an, um sicherzustellen, dass Sequenznummern in der Reihenfolge der Anforderung generiert werden. Diese Klausel ist nützlich, wenn Sie die Folgenummern als Zeitstempel verwenden. Die Garantie der Reihenfolge ist normalerweise nicht wichtig für Sequenzen, die zum Generieren von Primärschlüsseln verwendet werden.

ORDER ist nur erforderlich, um die geordnete Generierung zu gewährleisten, wenn Sie Oracle Database mit Real Application Clusters verwenden. Wenn Sie den exklusiven Modus verwenden, werden Sequenznummern immer in der richtigen Reihenfolge generiert.

NOORDER

Geben Sie NOORDER an, wenn Sie nicht garantieren möchten, dass Sequenznummern in der Reihenfolge der Anforderung generiert werden. Dies ist die Standardeinstellung.

Bietet Microsoft SQL Server eine starke Ordnungsbeschränkung für SEQUENCEs? Oder hält Microsoft es im Allgemeinen nicht für wichtig?

9
Daniel Gray

In SQL Server werden alle Sequenznummern auf einer einzelnen Instanz generiert, sodass sie bereits inhärent geordnet sind. Und wenn Sie sie nur als eindeutige Zahlen verwenden, sollte das sowieso keine Rolle spielen.

Die Oracle-Implementierung ist unterschiedlich, da in einer RAC-Umgebung (nicht bei allen Oracle-Implementierungen) zwei Sequenznummern von zwei verschiedenen "Instanzen" generiert werden können (dies ist der falsche Begriff für Oracle, aber nur die Äquivalenz in SQL Server). Normalerweise ist es Ihnen egal, ob die zuerst angeforderte langsamer ist und eine höhere Nummer als die später angeforderte hat - es sei denn, Sie verwenden die Sequenzen, wie in den Oracle-Dokumenten angegeben, als Zeitstempel, um die Reihenfolge der ursprünglichen Anforderung wirklich widerzuspiegeln.

12
Aaron Bertrand