Sim, o SQL 11 tem objetos SEQUENCE, consulte SQL Server v.Next (Denali):Usando SEQUENCE .
A criação de sequências manuais é possível, mas não recomendada. O truque para fazer um gerador de sequência é usar UPDATE WITH OUTPUT em uma tabela de sequências. Aqui está o pseudo-código:
CREATE TABLE Sequences (
Name sysname not null primary key,
Sequence bigint not null default 0);
GO
CREATE PROCEDURE sp_getSequence
@name sysname,
@value bigint output
AS
UPDATE Sequences
SET Sequence = Sequence + 1
OUTPUT @value = INSERTED.Sequence
WHERE Name = @name;
GO
Deixei de fora alguns detalhes, mas essa é a ideia geral. No entanto, há um grande problema:qualquer transação que solicite o próximo valor em uma sequência será bloqueada essa sequência até que ela seja confirmada, porque colocará um bloqueio de atualização no valor da sequência. Isso significa que todos as transações precisam serializar uma após a outra ao inserir valores e a degradação de desempenho resultante é insuportável em implantações de produção real.
Eu preferiria que você ficasse com os tipos de IDENTIDADE. Embora não sejam perfeitos, eles são muito melhores do que você pode alcançar por conta própria.