попробуйте это:
DECLARE @Output table (orderID smallint) --smallint=2 bytes
BEGIN TRANSACTION
INSERT INTO ORDERS
(CustomerId ,OrderId ,.....)
OUTPUT INSERTED.OrderId
INTO @Output
SELECT
@CustomerId ,ISNULL(MAX(OrderId),0)+1, @...
FROM ORDERS WITH (UPDLOCK,HOLDLOCK)
WHERE CustomerId=@CustomerId
--any other processing, can use just generated @Output.OrderId value if necessary
COMMIT
убедитесь, что у вас есть уникальный индекс / ограничение на CustomerId, OrderId