Por que o MS SQL Server SEQUENCEs não possui um parâmetro ORDER como o Oracle?

9

Na documentação de CREATE SEQUENCEpara T-SQL , você pode ver que o CREATE SEQUENCEcomando não possui ORDERparâmetro.

Para comparação, os documentosCREATE SEQUENCE do Oracle para show the ORDER/ NOORDERoptions:

ORDER

Especifique ORDERpara garantir que os números de sequência sejam gerados na ordem do pedido. Esta cláusula é útil se você estiver usando os números de sequência como registros de data e hora. A garantia do pedido geralmente não é importante para as sequências usadas para gerar chaves primárias.

ORDERé necessário apenas para garantir a geração ordenada se você estiver usando o Oracle Database com Real Application Clusters. Se você estiver usando o modo exclusivo, os números de sequência serão sempre gerados em ordem.

NOORDER

Especifique NOORDERse você não deseja garantir que os números de sequência sejam gerados na ordem do pedido. Esse é o padrão.

O Microsoft SQL Server fornece uma forte restrição de pedidos para SEQUENCEs? Ou a Microsoft não considera importante em geral?

Daniel Gray
fonte
2
Com o Oracle, isso normalmente só faz sentido com um RAC - até onde eu sei, não há nada equivalente a um RAC no SQL Server. Por que você acha que precisa disso?
a_horse_with_no_name
Estou apenas tornando um programa compatível com o SQL Server. Ele cria algumas seqüências e, nas CREATE SEQUENCEinstruções, encontrei o parâmetro ORDER e só queria ter certeza de que não seria um problema (não tenho certeza do porquê de ter ORDERsido adicionado em primeiro lugar, então pensei em pode perguntar apenas no caso).
Daniel Gray

Respostas:

12

No SQL Server, todos os números de sequência são gerados em uma única instância, para que eles já estejam ordenados de forma inerente. E se você os estiver usando apenas como números únicos, isso realmente não deve importar.

A implementação do Oracle é diferente porque, em um ambiente RAC (nem todas as implementações do Oracle), dois números de sequência podem ser gerados por duas "instâncias" diferentes (esse é o termo errado para o Oracle, mas apenas obtém equivalência no SQL Server). Normalmente, você não se importaria se o pedido primeiro fosse mais lento e tivesse um número maior do que o pedido mais tarde - a menos que, como dizem os documentos do Oracle, você estivesse usando as seqüências como carimbos de data e hora para refletir verdadeiramente a ordem da solicitação original.

Aaron Bertrand
fonte