Sql Server 2012 has introduced SEQUENCE objects, which allow you to generate sequential numeric values not associated with any table.
Creating them are easy:
CREATE SEQUENCE Schema.SequenceName
AS int
INCREMENT BY 1 ;
An example of using them before insertion:
DECLARE @NextID int ;
SET @NextID = NEXT VALUE FOR Schema.SequenceName;
-- Some work happens
INSERT Schema.Orders (OrderID, Name, Qty)
VALUES (@NextID, 'Rim', 2) ;
See my blog for an in-depth look at how to use sequences:
Sequences in SQL server 2012 – Implementing,Managing, Performance