In teoria, la cosa migliore è che la tua tabella (in SQL Server) abbia un campo impostato come progressivo ad incremento automatico, in genere si usa il campo della PRIMARY KEY che è sempre UNIQUE.
Però questo non va bene se, come credo, il tuo progressivo deve essere sempre sequenziale (cioè 'senza buchi').
In tal caso devi farlo da codice e devi recuperarlo al momento di registrare i dati (INSERT).
Ovvero, te lo scrivo in pseudo-codice:
1- aprire una transazione
2- bloccare la tabella con Lock pessimistico
.....così eviti che altri utenti possano aggiornare i dati, creando pasticci.
3- ricavare il progressivo con Max(campo) + 1 (puoi creare una routine RicavaProgressivo())
4- registrare il record nella tabella
5- sbloccare il Lock
6- chiudere la transazione (aperta al punto 1)